地雷:
私はその接頭辞が再び表示されている、しない限り、私は、オプションの接頭辞の後にすべてのものをキャプチャすることができます方法を理解する問題を抱えています。[FFFFFF]のタグがマッチした、オプションの追加の基である対1群としてやり直すます持っていいだろう。
私は新しいっぽいregexでするだと私はregex101.comサイトが大好きですが、これは単に理解の私のレベルより上であるように思われます。
式:
(\[[0-9a-fA-F]{6}\])?(.*)
サンプルテキスト
[00B800][!] Green - [004DB8] Blue does not match!!
[FFFFff][!] White
[e60000][!] Red
123456
Test string, another test abcdef
これは私が取得しようとしていた結果です。
リンク
第四鳥:
あなたは、最初のグループのオプションを作り、2キャプチャグループを使用することができます。
あなたはパターンの次の出現が表示されるまで続いて第二のグループのために、どちらかと一致\[[0-9a-fA-F]{6}\]
または文字列の末尾を。
(\[[0-9a-fA-F]{6}\])?(.+?)(?=\[[0-9a-fA-F]{6}\]|$)
あなたは第二のグループのための可能な先頭の空白の文字を省略したい場合は:
(\[[0-9a-fA-F]{6}\])?(?:[^\S\r\n]*(.+?))(?=\[[0-9a-fA-F]{6}\]|$)
それは一致します
(\[[0-9a-fA-F]{6}\])?
オプションの中のパターンと一致するグループを1(?:
非キャプチャグループ[^\S\r\n]*
改行以外の空白文字のマッチ0+出現(.+?)
キャプチャグループ2は、改行以外の任意の文字の1+出現と一致します
)
閉じるグループ(?=
右側にあるものを正lookhead、アサートがあります\[[0-9a-fA-F]{6}\]
パターンに一致|
若しくは$
文字列の末尾
)
閉じる先読み