0

ラケットのマニュアル(こちら)に次のような構造があります。

(?‹tst›‹pces›|‹pces›) = Match 1st ‹pces› if ‹tst›, else 2nd ‹pces›

次の例:

(regexp-match #rx"(?(?<=c)a|b)+" "cabal")

私はこれを理解できません。この種の正規表現はどのような状況で役立つ可能性がありますか?

4

1 に答える 1

3

これはconditional expressionperlで呼び出されます。そして、次のように書く方がより明確です

(?(condition)yes-pattern|no-pattern)

真の値が得られた場合は一致しyes-pattern、そうでない場合は一致します。欠落しているパターンは常に一致します。詳細については、perl docを確認してください(このページの「条件」を検索してください)このページには、例は含まれていませんが、ほとんどすべての有用な述語が表示されます。conditionno-pattern

別の例はここにあります。英語/ヨーロッパの日付形式とメールタイトルに関する例の2つがあります。

そしてこれはgnome開発者ドキュメントからのものです(このページで「条件付きサブパターン」を検索してください)ここにいくつかの例があります。括弧の例は、 perlregexpの詳細なマニュアルにも記載されている古典的な例です。

于 2012-12-03T10:37:47.300 に答える