1

テキストからいくつかのカスタム タグに一致する正規表現を見つけようとしています。タグの形式は常に [!--sometext--] または [!--sometext:param1--], [!--sometext:param1:param2--] です。私がする必要があるのは、「sometext」部分とオプションのパラメーターを「param1:param2」または「param1」と「param2」として個別に取得することです(問題ではありません)。

パラメータのないタグに対する私のアプローチは

\[!--(.+?)--\]

しかし、エレガントな方法で params 部分を一致させるにはどうすればよいですか?

4

1 に答える 1

1

更新: OK、3 回目は魅力的なはずですよね? ;-) これは、サンプルの Perl スクリプトで機能します。

これでうまくいくはずです(そして、Perl互換の正規表現を想定しています...これを書いている言語を指定しません):

\[!--([^\]:]+):?([^\]-]+?)?--\]

何が起きてる?

  1. まず、[!--
  2. :次に、 aまたは a以外のものに対して一致 (およびキャプチャ) を実行]
  3. 次に、オプションのコロンに一致します
  4. -次に、 aまたは a ではないもののオプションの貪欲でない一致 (およびキャプチャ) があります](これにより、すべてのオプション パラメータが一度にキャプチャされるはずです)。
  5. 次に、マッチングで終了します--]

オプションのパラメーターを分割して、:複数ある可能性があるケースをキャッチする必要があります。

于 2012-08-29T13:05:18.537 に答える