我想要一个字符串用作正则表达式字符串。
在下面的代码:
_pattern
就像是abba
一个模式,我想检查_string
遵循_pattern
(如catdogdogcat
)
生成正则表达式字符串用于re.match()
rxp
在下面的代码是,我想创建正则表达式以匹配_string
(例如,对于上述示例,其将为(.+)(.+)\\2\\1
)。哪些正在成功生成。但re.match()
正在返回None
。
我想了解它为什么不起作用以及如何纠正它?
import re
_pattern = "abba" #raw_input().strip()
_string = "catdogdogcat" #raw_input().strip()
hm = {}
rxp = ""
c = 1
for x in _pattern:
if hm.has_key(x):
rxp += hm[x]
continue
else:
rxp += "(.+)"
hm[x]="\\\\"+str(c)
c+=1
print rxp
#print re.match(rxp,_string) -> (Tried) Not working
#print re.match(r'rxp', _string) -> (Tried) Not working
print re.match(r'%s' %rxp, _string) # (Tried) Not working
输出
(.+)(.+)\\2\\1 None
期望输出
(.+)(.+)\\2\\1 <_sre.SRE_Match object at 0x000000000278FE88>
附注:'dict.has_key'已被弃用了很长时间。 'hm.has_key(x)'可以更改为'h in hm',它运行速度更快,并且与Python的其他方式保持一致。同样,'不是hm.has_key(x)'可以更好地表达为'x not in hm'。 – ShadowRanger
@ShadowRanger我会记住这一点。谢谢! – lordzuko