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_Findall - Fatal编程技术网

Python 在正则表达式返回中避免内部组

Python 在正则表达式返回中避免内部组,python,regex,findall,Python,Regex,Findall,我正在做一个html提取,我在次要任务中使用正则表达式。我使用的是pythonre模块,我希望避免在需要定义组时返回内部组,或者至少在似乎需要时返回内部组 作为一个例子,考虑字符串: line = u" 07.49 (43 votes) " 以及表达: expr = lambda x: re.findall("(\d+(\.\d{1,2})?)\D*(\d+)", x) 申请书的寄回日期为: expr(line) [(u'7.49', u'.49', u'43')] 我希望得到以下结果:

我正在做一个html提取,我在次要任务中使用正则表达式。我使用的是python
re
模块,我希望避免在需要定义组时返回内部组,或者至少在似乎需要时返回内部组

作为一个例子,考虑字符串:

line = u" 07.49 (43 votes) "
以及表达:

expr = lambda x: re.findall("(\d+(\.\d{1,2})?)\D*(\d+)", x)
申请书的寄回日期为:

expr(line)
[(u'7.49', u'.49', u'43')]
我希望得到以下结果:

expr(line)
[(u'7.49', u'43')]
但是我需要在
“(\d+(\.\d{1,2}))\d*(\d+)”
中定义内部组
(\.\d{1,2})
,因为数字的小数部分可能不会出现


有没有办法避免这个额外的群体?

绝对有。改用非捕获组

(\d+(?:\.\d{1,2})?)\D*(\d+)

这是一种特定于python的语法,还是在sed、egrep和其他工具上有效?@Rubens。。这是特定于正则表达式的,对所有正则表达式工具都有效。哇!明亮的D:谢谢大家!只是一个额外的问题:我能不能像使用
[^…]
那样否定一个组,但让
..
成为一个组?你应该对此使用负面展望。谢谢大家!我现在更喜欢正则表达式(: