Python中的罗马数字使用“re”模块

时间:2013-10-27 04:31:18

标签: python regex

我正在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>

但是当我把克拉留在前面时,它工作正常并且'帽子'找不到匹配。克拉做了什么,为什么“帽子”会找到匹配?

1 个答案:

答案 0 :(得分:4)

如果您确实打印了它匹配的内容,即:

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

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

^表示&#34;以...开头。&#34;当您将^放入时,"hat"不匹配,因为它不符合您的任何要求,并且不以""开头;但是,如果您使用""代替"hat",您将获得匹配。