如何匹配python中的字符串模式

时间:2017-05-30 15:37:45

标签: python pattern-matching

我希望匹配像

这样的模式
(u'-<21 characters>', N),

21个字符的0-9,a-z,A-Z加上字符,如〜!@#$%^&amp; *()_ ... N是1至99的数字

我正在尝试找到检索21个字符以及数字N的具体方法,稍后使用re.match方法使用它们但我不知道如何且documentation不是可以理解的。我该怎么做?

1 个答案:

答案 0 :(得分:1)

这是一个可能做你想要的程序。

请注意使用括号()来隔离您要查找的数据。另请注意使用m.group(1)m.group(2)来检索这些已保存的项目。

另请注意使用re.search()代替re.match()re.match()必须匹配字符串最开头的数据。另一方面,re.search()将找到第一个匹配,无论其在字符串中的位置如何。 (但如果字符串可能有多个匹配项,也请考虑使用re.findall()。)。

不要因使用.splitlines()而感到困惑,这只是为了示例程序。你也可以data = open('foo.txt') / for line in data:

import re

data = '''
(u'--UE_y6auTgq3FXlvUMkbw', 10),
(u'--XBxRlD92RaV6TyUnP8Ow', 1),
(u'--sSW-WY3vyASh_eVPGUAw', 2),
(u'-0GkcDiIgVm0XzDZC8RFOg', 9),
(u'-0OlcD1Ngv3yHXZE6KDlnw', 1),
(u'-0QBrNvhrPQCaeo7mTo0zQ', 1)
'''
data = data.splitlines()

for line in data:
    m = re.search(r"'(.+)', (\d+)", line)
    if m:
        chars = m.group(1)
        N = int(m.group(2))
        print("I found a match!: {}, {}".format(chars, N))