Python中的罗马数字使用;关于;模块

Python中的罗马数字使用;关于;模块,python,regex,Python,Regex,我正在继续编写代码,以覆盖10的位置。我的“模式”是: 如果我从“图案”前面去掉克拉(^),那么像“帽子”这样的字符串将找到匹配项: >>> 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> 模式='M?M?M?(CM?CD?D?C

我正在继续编写代码,以覆盖10的位置。我的“模式”是:

如果我从“图案”前面去掉克拉(^),那么像“帽子”这样的字符串将找到匹配项:

>>> 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>
模式='M?M?M?(CM?CD?D?C?C?C?C?)(XC?XL?L?X?X?X?)$' >>>打印检索(图案,'hat')
但是当我把克拉放在前面的时候,它就可以正常工作了,“帽子”找不到匹配的。克拉有什么作用?为什么“帽子”会找到匹配项?

如果您实际打印匹配项,即:

print re.search(pattern,"hat").group() 
您将什么也看不到,这是因为它与空字符串相匹配:
“”
。在正则表达式中,每个表达式都以
结尾,表示前面的0或1。如果前面没有
^
,您的正则表达式将匹配任何内容。它本质上可以归结为:
模式=“$”
,它再次匹配所有内容


^
表示“从开始”。当您将
^
放入时,
的“帽子”
不匹配,因为它不符合您的任何要求,也不以
开始;但是,如果您将
替换为
“hat”
,您将得到一个匹配项。

如果您实际打印匹配项,即:

print re.search(pattern,"hat").group() 
您将什么也看不到,这是因为它与空字符串相匹配:
“”
。在正则表达式中,每个表达式都以
结尾,表示前面的0或1。如果前面没有
^
,您的正则表达式将匹配任何内容。它本质上可以归结为:
模式=“$”
,它再次匹配所有内容

^
表示“从开始”。当您将
^
放入时,
的“帽子”
不匹配,因为它不符合您的任何要求,也不以
开始;但是,如果您将
替换为
“hat”
,您将得到一个匹配项。

请参阅。请参阅。