之后匹配模式和文本的正则表达式,直到再次出现该模式,然后重复
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}\}|$)
- 紧跟 {
、#
、六个字母数字和一个 }
字符或字符串结尾的位置。
我正在尝试为我的 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}\}|$)
- 紧跟{
、#
、六个字母数字和一个}
字符或字符串结尾的位置。