Python正则表达式问号运算符不工作?
import re str='abc defg' m1 = re.match(".*(def)?",str) m2 = re.match(".*(def)",str) print (m1.group(1),m2.group(1)) 以上输出为:
到底是怎么回事?即使使用非贪心的重复操作符,可选的捕获组(def)?不匹配 解决方法
当正则表达式引擎尝试匹配时,会发生什么.*(def)对abc defg:
>首先,引擎开始尝试匹配字符串开头的正则表达式. 但是,如果我们将正则表达式更改为.*(def)?,则会发生以下情况: >首先,正则表达式引擎再次从字符串的开头开始. 类似的事情发生在.*?(def)和.*?(def)?: >再次,引擎从字符串的开头开始. 有关更多信息,请参阅“Combining RE Pieces” section of the Perl regular expressions manual(与Python的“Perl兼容”正则表达式的行为相匹配). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |