6

これらの正規表現がどのように機能し、いつ使用されるかを理解できません。Python Web サイトでこれらの正規表現の具体的な例を見つけられませんでした。私はsed awkを知っていますが、そこでこれらのタイプの正規表現を使用していません

(?=...)
(?<=...)
(?(id/name)yes-pattern|no-pattern)
4

1 に答える 1

14

(?=...)肯定先読みアサーションです。現在の位置に一致した後に括弧内の部分があれば一致します?=が、一致のために文字を消費しません。たとえば、正規表現a(?=b)はa のa後に続く abに一致しますが、一致の一部としてを返しませんb

(?<=...)は同じですが、 後ろを向いています。つまり、後ろを向いています。繰り返しますが、何も消費しません。

(?(id/name)yes-pattern|no-pattern)条件付きです。名前付きグループ id/nameが一致した場合、yes-patternこの時点で文字列が一致する必要がありますno-pattern

正直なところ、これらは非常に高度な機能であり、条件式を使用した覚えがありません。ルックアラウンドはより一般的ですが、多くの場合、正規表現エンジンによって非常に制約されます。たとえば、後読みは多くの場合、固定長の文字列でしか実行できません。

于 2013-02-01T13:06:47.687 に答える