0

我正在处理此页面并继续编写代码以覆盖 10 的位置。我的“模式”是:

>>> pattern = '^M?M?M?(CM?|CD?|D?C?C?C?)(XC?|XL?|L?X?X?X?)$'

如果我从“模式”前面删除克拉 (^),那么像 'hat' 这样的字符串会找到匹配项:

>>> pattern = 'M?M?M?(CM?|CD?|D?C?C?C?)(XC?|XL?|L?X?X?X?)$'    
>>> print re.search(pattern,'hat')
<_sre.SRE_Match object at 0x1004ba360>

但是当我把克拉放在前面时,它就可以正常工作并且“帽子”找不到匹配项。克拉有什么作用,为什么“帽子”能找到匹配项?

4

1 回答 1

4

如果您实际打印匹配的内容,即:

print re.search(pattern,"hat").group() 

你什么也看不到,这是因为它与空字符串匹配:""。在您的正则表达式中,每个表达式都以?指示它之前的任何内容的 0 或 1 结尾。如果没有^前面的,您的正则表达式将匹配任何内容。它基本上归结为: pattern = '$',它再次匹配所有内容。

^意思是“开始于” 。当您放入^时,"hat"不匹配,因为它不符合您的任何要求并且不以"";开头 但是,如果你""代替"hat",你会得到一个匹配。

于 2013-10-27T04:38:06.960 回答