检查字符串是否与python中的正则表达式完全匹配

时间:2015-05-11 04:04:34

标签: python regex

我想检查字符串是否与python 3中的正则表达式完全匹配。

例如,如果我有:

regex = "(A*B)*"
stringone = "AABAABB"
stringtwo = "ABCAAB"
  • stringone将匹配正则表达式,
  • stringtwo不会匹配。

我尝试使用内置的re模块,但无论我做什么,我都不会得到任何类型的对象。

这是我的代码

compiled_regex = re.compile(regex)
if compiled_regex.match(string).group(0) == string:
    print("Match")

2 个答案:

答案 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)*$"