0

正規表現の例:

/^([\w]+:)?other:(.*)$/

文字列の例:

test:other:words...

最初のグループは「test:」に一致しますが、「test」のみをキャプチャする必要があります。最初に私は考えました:

/^([\w]+)?:?other:(.*)$/

しかし、最初に:を 1 つだけ持つことはできないことに気付きました。存在する場合は:で終わる必要があるグループをキャプチャするにはどうすればよいですか?

入力と出力の例:

randomString:constantString:somethingElse

最初のグループとして「randomString」を指定する必要があります。

constantString:somethingElse

最初のグループを空にする必要があります

4

2 に答える 2

2

最初の単語をオプションにしたい場合は、次を使用します。

/^(?:(\w+):)?other:(.*)$/

この正規表現は\w+:、全体として非キャプチャ グループを作成し、オプションにします。さらに、内部でキャプチャ グループを使用して\w+一部をキャプチャします。

したがって、存在する場合\w+:、グループ 1 には\w+一部が含まれ、存在しない場合は空の文字列が含まれます。

于 2013-09-24T18:38:39.207 に答える
1

どうぞ:

^(?:(\w+):)?constantString:(.*)$

(?:) は非キャプチャ グループです

デモ

于 2013-09-24T18:53:42.860 に答える