一行中多个匹配项的条件正则表达式

Conditional Regex for multiple matches in a line

我有一个正则表达式,负责在可能有多个匹配项(即 "A:B A: B A : B A:B" 等)的行中匹配模式 A:B 问题在于复杂性A代表。

我正在使用正则表达式:

\b[\w|\(|\)+]+\s*:(?:(?![\w+]+\s*:).)*

匹配以下项目:

Data_1: Tutor              Elementary: 10 a F                 Test:   7.87 sips
Turning 1 Data (A Run), Data:    0.0   10.0   10.0   17.3    0.0
Turning 2 Data (A Run), Data2:    0.0    6.8    0.0    6.8    6.8
Data_1: Tutor  Pool:   Data2: A B C
Turning 2 (A Run), ABSOLUTE:     368    337    428      0      2    147
Data_4   : 4AZE    Localization   : 33.14 lat  -86 long
Time: 0.75   Data Scenario: 3121.2

问题是,如果您检查此设置(我使用 https://regex101.com/),第 2、3、5 行不会 return 正是我要查找的内容。如果匹配项是行中的第一个,我希望它获取从行首到第一个“:”的所有内容。这种类型的条件正则表达式可能吗?我已经尝试了所有我能想到的可能的方法,但我还没有成功。

提前致谢!

有点复杂,但试试这个here

^(.*?:.*?)(\b\w+\b\s*:.*?)\b\w+\b:.*$|^(.*?:.*?)\b\w+\b\s*:(.*?)$|^(.*)$