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 に答える