3

私は次の正規表現を持っています:

(?P<question>.+(?<!\[\[))

hello world!文字列に一致するように設計されていますhello world! [[A string typically used in programming examples]]

しかし、私は文字列全体に一致するだけで、その理由がわかりません。ルックアラウンドのすべてのフレーバーを試しましたが、うまくいきません...

誰もがこの問題を解決する方法を知っていますか?

ありがとう、
CFP。

4

1 に答える 1

3

一致の最後にルックアラウンドをチェックするだけです。つまり、最初に文字列を可能な限り一致させてから、ルックアラウンドをチェックできます。文字列の最後にがないため[[、一致は成功します。

ここで本当に正規表現を使用したい場合は、次のように、追加するすべての文字のルックアラウンドを確認する必要があります。

>>> s = 'hello world! [[A string typically used in programming examples]]'
>>> regex = re.compile('(?P<question>((?!\[\[).)+)')
>>> regex.match(s).group('question')
'hello world! '

ただし、s.find('[[')ここでは正規表現の代わりに次のようなものを使用する方がはるかに簡単であることに注意してください。

于 2010-04-03T08:40:55.520 に答える