Python 如何检测字符串是否与正则表达式中的许多模式中的某些模式匹配
我的python脚本有问题,我想做一些正则表达式函数。现在我已经做了,但是如何检测字符串是否与某些模式匹配 我举一个例子,我有一个字符串和两个正则表达式模式。现在我如何知道字符串是与第一个模式匹配还是与第二个模式匹配 这是我的剧本Python 如何检测字符串是否与正则表达式中的许多模式中的某些模式匹配,python,regex,Python,Regex,我的python脚本有问题,我想做一些正则表达式函数。现在我已经做了,但是如何检测字符串是否与某些模式匹配 我举一个例子,我有一个字符串和两个正则表达式模式。现在我如何知道字符串是与第一个模式匹配还是与第二个模式匹配 这是我的剧本 #!/usr/bin/python import re words = ["(@sosiora\*+([1-5]*)(\W|)+(@[a-z]*)(\W|))", "((@[a-z]*)(\W|)@sosiora\*+([1-5]*)+(\W|))"
#!/usr/bin/python
import re
words = ["(@sosiora\*+([1-5]*)(\W|)+(@[a-z]*)(\W|))",
"((@[a-z]*)(\W|)@sosiora\*+([1-5]*)+(\W|))"
]
pattern = re.compile('|'.join(words), flags=re.IGNORECASE)
text = "@sosiora*4 @samsungID"
m = pattern.findall(text)
print m;
if m:
if len(m[0][1]) > 1:
print 'Rating is not accepted : ' +m[0][1]
print 'String: ' + text
else :
print 'Found %d matches' % len(m)
print 'String: ' + text
print 'Rating: ' + m[0][1]
print 'Target: ' + m[0][3]
print 'Pattern: ' // this is output to show the pattern
else:
print 'rate is not found'
因此,我想要的输出只是请帮助我,谢谢。您可以循环您的模式:
def _get_pos_and_group(s):
words = ["(@sosiora\*+([1-5]*)(\W|)+(@[a-z]*)(\W|))",
"((@[a-z]*)(\W|)@sosiora\*+([1-5]*)+(\W|))"
]
for i, w in enumerate(words):
if re.search(w, s):
return i, re.search(w, s).group(0)
return -1, None
print(_get_pos_and_group("@sosiora*4 @samsungID"))
(0, '@sosiora*4 @samsung')
这还有一个好处,就是不要组合两个格式都不正确的模式,而是组合后会变成另一个模式——例如第一个模式缺少a),第二个模式缺少a(