我想检查字符串是否与python 3中的正则表达式完全匹配。
例如,如果我有:
regex = "(A*B)*"
stringone = "AABAABB"
stringtwo = "ABCAAB"
我尝试使用内置的re模块,但无论我做什么,我都不会得到任何类型的对象。
这是我的代码
compiled_regex = re.compile(regex)
if compiled_regex.match(string).group(0) == string:
print("Match")
答案 0 :(得分:3)
您可以在行正则表达式模式中添加行首(^
)和行尾($
)模式:
regex = r"^(A*B)*$"
pattern = re.compile(regex)
for s in "AABAABB", "ABCAAB", "B", "BBB", "AABAABBx", "xAABAABB":
if pattern.match(s):
print "Matched:", s
输出:
Matched: AABAABB Matched: B Matched: BBB
或者您也可以将正则表达式与匹配对象一起使用,但使用group()
,而不是groups()
:
pattern = re.compile(r'(A*B)*')
for s in "AABAABB", "ABCAAB", "B", "BBB", "AABAABBx", "xAABAABB":
m = pattern.match(s)
if m is not None and m.group() == s:
print "Matched:", s
输出:
Matched: AABAABB Matched: B Matched: BBB
答案 1 :(得分:1)
你的正则表达式工作正常,看:
import re
regex = "(A*B)*"
stringone = "AABAABB"
stringtwo = "ABCAAB"
compiled_regex = re.compile(regex)
if compiled_regex.match(stringone):
print("Match")
print(compiled_regex.match(stringone))
输出:
Match
<_sre.SRE_Match object; span=(0, 7), match='AABAABB'>
如果你想另外检查字符串是否包含除了正则表达式指定的内容之外的任何内容,你应该使用^
和$
,如下所示:
regex = "^(A*B)*$"