2024-04-20 12:12:02 发布
网友
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语句中不包括^和$时打印不同的答案,等等。,。从理论上讲,^和$只是显示开头和结尾的匹配模式。你知道吗
简而言之:因为re.search()和re.match()不一样。你知道吗
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()要求在输入的开始处匹配。你知道吗
re.search(your_pattern_without_^)
"QQQQXII"
re.search(your_pattern_with_^)
re.match(your_pattern_without_^)
简而言之:因为
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()
要求在输入的开始处匹配。你知道吗相关问题 更多 >
编程相关推荐