我正在this page继续工作并继续执行代码以涵盖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>
但是当我把克拉留在前面时,它工作正常并且'帽子'找不到匹配。克拉做了什么,为什么“帽子”会找到匹配?
答案 0 :(得分:4)
如果您确实打印了它匹配的内容,即:
print re.search(pattern,"hat").group()
你什么也看不见,这是因为它与空字符串匹配:""
。在你的正则表达式中,每个表达式以?
结尾,表示之前的任何内容为0或1。如果前面没有^
,那么正则表达式将匹配任何内容。它基本上归结为:pattern = '$'
,它再次匹配所有内容。
^
表示&#34;以...开头。&#34;当您将^
放入时,"hat"
不匹配,因为它不符合您的任何要求,并且不以""
开头;但是,如果您使用""
代替"hat"
,您将获得匹配。