0

私はこれに頭を悩ませようとしていますが、Googleとstackoverflowのすべての例は理解に役立っていません.

私はこの文字列を持っています

{{@test: mytest}} {{@test mytest}}

これらの例の両方からキャプチャtestしたいと思います。mytestしたがって、それが私の文字列で発生した場合、両方が同じ配列セットを返します。

これは私がこれまでに持っている/しようとしているものです

/{{\s*@\s*(.*)\s*:\s*(.*)\s*}}/

これは最初の例では機能しますが、2 番目の例では機能しません。

:だから私はおそらく答えは、 ?をスキップして文字列を検索することだと思った.

4

2 に答える 2

2

基準を明確に定義していませんが、一致させたいテキストに空白が含まれていない可能性があると仮定すると、次のように使用できます。

/{{\s*@\s*([^:\s]*)\s*:?\s*([^}\s]*)\s*}}/
  • [^:\s]*コロンも空白も含まない文字列に一致します
  • [^}\s]*中括弧も空白も含まない文字列に一致します
  • :?オプションのコロンに一致します
于 2012-09-21T06:23:22.543 に答える
1

試してみてください\{\{\s*@([^@:\s]+)\s*:?\s+([^}\s]+)\s*\}\}

編集:ああ、ティム・ピエツカーは私をそれに打ち負かした。私たちの表現には微妙な違いがいくつかありますが、どちらもあなたが望むことをするべきだと思います。+私はいくつかの場所ではなく、使用することを選択し*ました。あなたの質問の私の解釈は、与えられたキャラクターの少なくとも1つがなければならないと私に信じさせました。

編集2:私のアプローチの1つの利点は、それが一致しないこと{{@testmy-test}}です。

于 2012-09-21T06:26:22.857 に答える