-4

私はこれらを持っています:

<!--{tag}--> 

<!--{tag(integer)}-->

<!--{tag('argument1')}-->

<!--{tag('argument1', 'argument2',... 'argumentn')}-->

それらすべてを処理できる単一のパターンを探しています。最初のパターンでこれを試しましたが、2番目のパターンから4番目のパターンまではわかりません:

<!--\{tag\}-->

ps: *引数は、整数 (引用符なし) または一重引用符 (または二重引用符) 付きの文字列にすることができます。※パターンは引数の情報を抽出できます

ありがとう

4

3 に答える 3

1

それはきれいではありませんが、これは私が思いついたものです:

<!--\{tag(?:\(((?:\d+)|(?:'\w+')|(?:(?:['"]?\w+['"]?,\s*){1,}['"]?[\w\d]+['"]?))\))?\}-->

regexerから、すべてのテストケースに一致していることがわかります。

ただし、次のテストケースにも一致します。これらのテストケースは、修正方法を決定するためにOPに任せています。

<!--{tag(argument1, 2)}--> (missing quotes around string arguments)
<!--{tag("argument1', 2)}--> (unmatched single and double quotes)
<!--{tag(2, "arg)}--> (missing unmatched quotes)
于 2012-07-14T13:10:28.253 に答える
0
<!--\{tag(\([0-9]+|'[a-zA-Z0-9]+'\))?\}-->

いくつかのエスケープの問題がある可能性があります。現在、テストする環境は実際にはありませんが、パターンは機能するはずです。

基本的にタグを探します。タグには、括弧内の 2 つの追加サフィックスのいずれかをオプションで付けることができます。

于 2012-07-14T12:57:55.597 に答える
0

<!--\{tag.*?\}--> 抽出引数の使用にこの正規表現を使用します(?<=<!--\{tag).*?(?=\}-->)

于 2012-07-14T12:58:42.057 に答える