このパターン(?<!(asp|php|jsp))\?.*
は PCRE では機能しますが、Python では機能しません。
では、この正規表現を Python で動作させるにはどうすればよいでしょうか? (パイソン2.7)
このパターン(?<!(asp|php|jsp))\?.*
は PCRE では機能しますが、Python では機能しません。
では、この正規表現を Python で動作させるにはどうすればよいでしょうか? (パイソン2.7)
それは私にとって完全にうまく機能します。もしかして使い方間違ってませんか?re.search
の代わりに必ず使用してくださいre.match
:
>>> import re
>>> s = 'somestring.asp?1=123'
>>> re.search(r"(?<!(asp|php|jsp))\?.*", s)
>>> s = 'somestring.xml?1=123'
>>> re.search(r"(?<!(asp|php|jsp))\?.*", s)
<_sre.SRE_Match object at 0x0000000002DCB098>
これはまさにあなたのパターンがどのように振る舞うべきかです。Match
glglgl が述べたように、そのオブジェクトを変数 (たとえばm
)に割り当ててから を呼び出すと、一致を取得できますm.group()
。それが得られ?1=123
ます。
ちなみに、内括弧は省略できます。このパターンは同等です:
(?<!asp|php|jsp)\?.*