関数名とコロンで始まるネストされた Wiki 関数または Wiki パーサー関数を一致させたいのですが、第 1 レベルのテストで再帰的な pcre 正規表現を機能させようとすると、正規表現パターンの作成に失敗します。{{aFunctionName:
最初にコロンが続くテストと一致させたいのですが、正規表現{{[\w\d]+:
ではテストテキストは次のようになります
1 {{DEFAULTSORT: shall be matched {{PAGENAME}} }}
2 {{DEFAULTSORT: shall be matched }}
3 {{DEFAULTSORT: shall be matched {{PAGENAMEE: some text}} }}
4 Lorem ipsum {{VARIABLE shall not be matched}}
5 {{Some template|param={{VARIABLE}} shall not be matched }}
私はできる
- ネストされた中括弧を取得する
{{(?:(?:(?!{{|}}).)++|(?R))*}}
には、行 1、2、3、部分的に 4 および 5 を取得します - ネストされた wiki 関数を取得するに
({{(?:[\w\d]+:)(?:(?:(?!{{|}}).)++|(?1))*}})
は、3 行目のみを取得しますが、1 行目と 2 行目も一致させたいと考えています。
しかし、(疑似コードとして書かれた)次のようなものをテストする正規表現パターンを構築する方法がわかりません:
{{match1st-level-Function: then anything {{nested}} or not nested }}
{{do not match simple {{nested}} things}}
pcre正規表現の専門家からの助けはありますか? ありがとうございました!