Python正则表达式re.match,为什么这段代码不起作用?

bin*_*ing 9 python regex

这是用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)
Run Code Online (Sandbox Code Playgroud)

它没有返回.

我试着取下括号,

pattern='\s\d{11}/\d{8}' 
Run Code Online (Sandbox Code Playgroud)

它仍然会回来none.

我的问题是:

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

eum*_*iro 24

re.match自字符串开头以来"匹配",但还有一个额外的1.

re.search相反,使用它将"搜索"字符串中的任何位置.而且,在您的情况下,也找到一些东西:

>>> re.search(pattern,s).groups()
('89059809102', '30589533')
Run Code Online (Sandbox Code Playgroud)

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

>>> re.search('\s\d{11}/\d{8}',s).groups()
()
Run Code Online (Sandbox Code Playgroud)