之后匹配模式和文本的正则表达式,直到再次出现该模式,然后重复

Regular expression to match pattern and text afterwards until that pattern occurs again, then repeat

我正在尝试为我的 Kotlin/JVM 程序编写满足以下条件的正则表达式:
给定这行文本 {#FF00FF}test1{#112233}{placeholder} test2
它应该匹配:
第 1 场比赛:#FF00FF 作为第 1 组,test1 作为第 2 组
匹配 2:#112233 作为第 1 组,{placeholder} test2 作为第 2 组

#FF00FF 可以是任何有效的 6 字符十六进制颜色代码。

我遇到的困难是匹配颜色模式之后的文本,直到出现另一种颜色模式。
我想出的当前正则表达式是 \{(#[a-zA-Z0-9]{6})\}((?!\{#[a-zA-Z0-9]{6}\}).*)

您可以使用

\{(#[a-zA-Z0-9]{6})\}(.*?)(?=\{#[a-zA-Z0-9]{6}\}|$)

regex demo详情:

  • \{ - 一个 { 字符
  • (#[a-zA-Z0-9]{6}) - 第 1 组:一个 # 字符和六个字母数字
  • \} - 一个 } 字符
  • (.*?) - 第 2 组:除换行字符外的任何零个或多个字符尽可能少
  • (?=\{#[a-zA-Z0-9]{6}\}|$) - 紧跟 {#、六个字母数字和一个 } 字符或字符串结尾的位置。