を正規表現では\G
が必要です(したがって、一部の正規表現エンジンはこの式を実行できません)。
それは私たちが(
(?!^)
が必要な理由であるか、文字列の先頭、)私たちの最後の試合の終わりからマッチングを開始することができますので、
/(?:,|\G(?!^))[^A-Z]*\K[A-Z]/g
Demo.
\G
の使用が不可欠である - すべてカンマの後に。
また、一致を「リセット」してキャプチャグループを使用する必要がないように、\K
を使用します。ただし、最後を[^A-Z]*([A-Z])
に簡単に置き換えて、キャプチャグループにアクセスできます。
最後に、[^A-Z]*
の代わりに、怠惰なドットマッチオール(.*?
)を使用できます。私はできるだけ具体的にすることを好む。 `意味は何
(?: (?# Start non-capturing group for alternation)
, (?# Match a comma)
| (?# OR)
\G (?# Match the end of the last match)
(?!^) (?# Dont match the beginning)
) (?# End non-capturing group)
[^A-Z]* (?# Match 0+ non-capital letters)
\K (?# Reset the match for clarity)
[A-Z] (?# Match capital letter)
出典
2016-10-24 19:21:08
Sam
しかしelse'何かのようになります。
ここ拡大説明がですか?あなたの質問はかなり曖昧です – hek2mgl
私はそれが他のものとマッチするために使用できることを意味します。しかし、私の質問は正確に例である。 –