正则表达式分割与匹配

1 投票
1 回答
984 浏览
提问于 2025-04-16 03:07
>>> zznew
'...0002211 118 7.5 "Weeds" (2005) {The Love Circle Overlap (#4.10)}'

>>> re.split('\(+\d+\)',zznew)
['...0002211 118 7.5 "Weeds" ', ' {The Love Circle Overlap (#4.10)}']

>>> m = re.match('\(+\d+\)',zznew)

>>> m.groups()
Traceback (most recent call last):
  File "<pyshell#104>", line 1, in <module>
    m.groups()
AttributeError: 'NoneType' object has no attribute 'groups'

在上面的例子中,当我使用split的时候,它能找到(2005)并把它分开……但是当我用match的时候,它却没有匹配到……m.groups()的结果是空的……这是怎么回事呢 :(

1 个回答

2

使用 re.search 而不是 re.match

这两个方法的区别在于,re.match 只会在字符串的开头进行匹配,而 re.search 可以在字符串的任何位置进行匹配。想了解更多细节,可以查看 文档

正如 NullUserException 指出的,如果你想提取年份,可以这样做:

m = re.search('\((\d+)\)', zznew)
print m.group(1)

撰写回答