2016-12-15 9 views
1

|で囲まれた文字列に一致する必要があります。だから、パターンは単にr"\|([^\|]*)\|"、右でしょうか?そして、まだ:私のregexはregex101で動作しますが、Pythonでは動作しませんか?

>>> pattern = r"\|([^\|]*)\|" 
>>> re.match(pattern, "|test|") 
<_sre.SRE_Match object at 0x10341dd50> 
>>> re.match(pattern, " |test|") 
>>> re.match(pattern, "asdf|test|") 
>>> re.match(pattern, "asdf|test|1234") 
>>> re.match(pattern, "|test|1234") 
<_sre.SRE_Match object at 0x10341df30> 

それだけ|で始まる文字列にマッチするのか?これはregex101でうまく動作し、問題がある場合はPython 2.7です。私はおそらくここで何かダムをやっているので、どんな助けもありがたいです。ありがとう! 、一致文字列の先頭にのみ ためre.match()チェックしながら、どこにでもある文字列でのマッチのre.search()チェック(これはPerlがデフォルトで を行うものです):

答えて

2

re.match先頭から始まる文字列と一致することになるでしょう。あなたの場合は、一致する要素が必要です。私はそれは私の一部にダム何かであることを知っていた、

>>> re.search(pattern, " |test|").group(0) 
'|test|' 

>>> re.findall(pattern, " |test|") 
['test'] 
2

Pythonは、正規表現に基づいて、2つの異なるプリミティブな操作を提供しています。

Document

+0

ありがとう:その場合は、あなたは、文字列のどこにでもその試合を見つけるre.searchまたはre.findallのようなものを、使用することができます。 –

+0

この部分は非常に混乱しているので、その部分のドキュメントを作成します。 –

関連する問題