2

こんな表現をしています。

var string = [a][1] [b][2] [c][3] [d .-][] [e][4]

ブラケットの最初のペア内に任意の文字 (文字、数字、句読点など) を含む可能性のある 4 番目の要素を一致させたいのです[d .-][]が、ブラケットの 2 番目のペアは空のままです。などの他の要素には[a][1]、任意の文字を含めることができますが、2 番目の括弧のペア内に数字が含まれます。

私はこれを試しました:

string.match(/\\[[^]+]\\[ ]/);

しかし、それは貪欲すぎる。

どんな助けでも大歓迎です。

4

1 に答える 1

3

ブラケットの最初のペア内に任意の文字 (文字、数字、句読点など) を含む可能性のある 4 番目の要素 [d .-][] を一致させたいのですが、ブラケットの 2 番目のペアは空のままです。

string.match(/\[[^\]]*\]\[\]/)

するべきです。

それを分解するには、

\[リテラルの左角括弧に一致し、

[^\]]*右角かっこ以外の任意の数の文字に一致します。

\]リテラルの右角括弧に一致し、

\[\]の間に何もない2 つの文字シーケンス[]、角括弧に一致します。

[^]+ただし、貪欲についての質問に答えるには、疑問符を追加して、貪欲な一致を貪欲でないものにすることができます[^]+?[^]ただし、IEでは機能しないことを知っておく必要があります。UTF-16 コード単位に一致させるために、私が使用する傾向が[\s\S]あるものは、もう少し冗長ですが、すべてのブラウザーで動作します。

于 2011-07-06T02:43:36.647 に答える