Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式:使用(锚字符串+;表达式)进行搜索。但是只提取表达式_Python_Regex - Fatal编程技术网

Python 正则表达式:使用(锚字符串+;表达式)进行搜索。但是只提取表达式

Python 正则表达式:使用(锚字符串+;表达式)进行搜索。但是只提取表达式,python,regex,Python,Regex,嗨,我一直在使用一个命令行工具,它在执行时返回一些字符串。我只想要一部分 'Deskew 1.20 (2016-09-01) by Marek Mauder x64\r\n http://galfar.vevb.net/deskew/\r\nLoad input file - time taken: 192,956 us\r\n Preparing input image (1514538.png) ...\r\nCalculating skew angle...\r\nSkew d

嗨,我一直在使用一个命令行工具,它在执行时返回一些字符串。我只想要一部分

'Deskew 1.20 (2016-09-01) by Marek Mauder x64\r\n
 http://galfar.vevb.net/deskew/\r\nLoad input file - time taken: 192,956 
 us\r\n
 Preparing input image (1514538.png) ...\r\nCalculating skew 
 angle...\r\nSkew detection - time taken: 2,854,167 us\r\nSkew angle found: 
 -0.50\r\nSkipping deskewing step, skew angle lower than threshold of 
 80.00\r\nSave output file - time taken: 68,184 us\r\nDone!\r\n'
对于我正在做的实验,性能是最重要的因素。我只想搜索

 Skew angle found: -0.50
为此,我使用了这个表达式
(找到的倾斜角度:[-+]?\d*\.\d+\d+$)
但我真正需要的是它的签名浮动部分。但是当我只使用
[-+]?\d*\.\d+\d+$
表达式时,它还会返回整个字符串中的其他数字。我知道一种方法可以是先搜索,然后只提取该字符串中的浮点值。但这似乎不是最理想的方式。是否有任何方法(Regex)可以精确定位找到的倾斜角度位置,并且只提取浮动。因为这样我希望我可以编译正则表达式并更快地提取

请建议使用
re.search()

功能:

import re

text = '''Deskew 1.20 (2016-09-01) by Marek Mauder x64\r\n
 http://galfar.vevb.net/deskew/\r\nLoad input file - time taken: 192,956
 us\r\n
 Preparing input image (1514538.png) ...\r\nCalculating skew
 angle...\r\nSkew detection - time taken: 2,854,167 us\r\nSkew angle found:
 -0.50\r\nSkipping deskewing step, skew angle lower than threshold of
 80.00\r\nSave output file - time taken: 68,184 us\r\nDone!\r\n'''

skew_angle = re.search(r'Skew angle found:\s*(-?\d+(\.\d+)?)', text).group(1)
print(skew_angle)
输出:

-0.50

听起来你好像想找人帮忙。或者只是把捕获括号放在你想要的位上,而不是整个模式。例如,请参阅刚刚在regex101中测试以匹配浮点值:(\d.\d+)@jornsharpe。请先回答以下问题:)@F.Leone谢谢。但是这个数字也可以是正的,也可以是这样的。“23.4”检查上面的答案。:)@F.您的解决方案仅适用于负数、一个整数和点后有多个数字的数字。