15

这是用 Python 编写的,

import re
s='1 89059809102/30589533 IronMan 30 Santa Ana Massage table / IronMan 30 Santa Ana Massage table'
pattern='\s(\d{11})/(\d{8})'
re.match(pattern,s)

它不返回任何内容。

我试着把括号去掉,

pattern='\s\d{11}/\d{8}' 

它仍然返回none

我的问题是:

  1. 为什么 re.match 没有找到任何东西?
  2. 模式中带或不带括号有什么区别?
4

1 回答 1

36

re.match从字符串的开头“匹配”,但有一个额外的1.

改为使用re.search,它将“搜索”字符串中的任何位置。而且,就您而言,还可以找到一些东西:

>>> re.search(pattern,s).groups()
('89059809102', '30589533')

如果您删除模式中的括号,它仍将返回一个有效的_sre.SRE_Match, 对象,但为空groups

>>> re.search('\s\d{11}/\d{8}',s).groups()
()
于 2013-02-18T10:10:38.777 回答