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|))"

我的python脚本有问题,我想做一些正则表达式函数。现在我已经做了,但是如何检测字符串是否与某些模式匹配

我举一个例子,我有一个字符串和两个正则表达式模式。现在我如何知道字符串是与第一个模式匹配还是与第二个模式匹配

这是我的剧本

#!/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(