python regex(验证罗马数字)

2024-04-20 12:12:02 发布

您现在位置:Python中文网/ 问答频道 /正文

import re

print( True if (re.search(r"^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$",input())) else False)

在下面的代码中,它检查给定的罗马数字是否有效,为什么在print语句中不包括^和$时打印不同的答案,等等。,。从理论上讲,^和$只是显示开头和结尾的匹配模式。你知道吗


Tags: importrefalsetrueinputsearchifcd
1条回答
网友
1楼 · 发布于 2024-04-20 12:12:02

简而言之:因为re.search()re.match()不一样。你知道吗

re.search()在整个输入中搜索与给定模式的匹配,而re.match()要求模式在输入的开头匹配。 独立于此,您可以强制模式仅在输入的开始/结束处与^/$匹配。有关详细说明,请参见docs。你知道吗

在您的例子中,re.search(your_pattern_without_^)将匹配"QQQQXII",因为没有任何东西强制整个输入匹配。另一方面,re.search(your_pattern_with_^)re.match(your_pattern_without_^)将不匹配"QQQQXII",因为模式或re.match()要求在输入的开始处匹配。你知道吗

相关问题 更多 >