(?:)正则表达式Python
我今天遇到了一个正则表达式,但它非常糟糕,几乎没有解释。python中的(?:)正则表达式Python,python,regex,Python,Regex,我今天遇到了一个正则表达式,但它非常糟糕,几乎没有解释。python中的(?:)正则表达式的用途是什么?在何处和何时使用 我试过这个,但似乎不起作用。为什么呢 word = "Hello. ) kahn. ho.w are 19tee,n doing 2day; (x+y)" expressoin = re.findall(r'(?:a-z\+a-z)', word); 从: 普通括号的非捕获版本。匹配任何东西 正则表达式在括号内,但子字符串 执行匹配或删除后,无法检索组匹配的 稍后在模式中引
(?:)
正则表达式的用途是什么?在何处和何时使用
我试过这个,但似乎不起作用。为什么呢
word = "Hello. ) kahn. ho.w are 19tee,n doing 2day; (x+y)"
expressoin = re.findall(r'(?:a-z\+a-z)', word);
从:
普通括号的非捕获版本。匹配任何东西
正则表达式在括号内,但子字符串
执行匹配或删除后,无法检索组匹配的
稍后在模式中引用
基本上,它与(…)
是一样的,但不在组中存储捕获的字符串
演示:
只返回一个组,其中包含条
。(?:foo)
组未检测到
每当需要对元字符进行分组时,可以使用此选项,否则这些元字符将应用于表达式的较大部分,例如|
备用组:
monty's (?:spam|ham|eggs)
您不需要捕获组,但需要限制
元字符的范围
至于你的样品尝试;使用re.findall()。您很可能正在寻找:
re.findall('([a-z]\+[a-z])', word)
其中re.findall()
将返回所有捕获组的列表元组;如果只有一个捕获的组,那么它是一个字符串列表,每个匹配只包含一个组
演示:
?:
用于忽略捕获组
例如,在regex(\d+)
中,匹配将在组\1
但如果您使用(?:\d+
,则组\1
中将没有任何内容,它用于非捕获组:
>>> matched = re.search('(?:a)(b)', 'ab') # using non-capturing group
>>> matched.group(1)
'b'
>>> matched = re.search('(a)(b)', 'ab') # using capturing group
>>> matched.group(1)
'a'
>>> matched.group(2)
'b'
阅读文档!你希望和什么比赛?也许您想匹配[a-z]\+[a-z]
?
re.findall('([a-z]\+[a-z])', word)
>>> word = "Hello. ) kahn. ho.w are 19tee,n doing 2day; (x+y)"
>>> re.findall('([a-z]\+[a-z])', word)
['x+y']
>>> matched = re.search('(?:a)(b)', 'ab') # using non-capturing group
>>> matched.group(1)
'b'
>>> matched = re.search('(a)(b)', 'ab') # using capturing group
>>> matched.group(1)
'a'
>>> matched.group(2)
'b'