正则表达式:将字符串拆分为组

时间:2017-04-25 09:04:38

标签: regex

字符串的次要更新,因为我没有在第一次清楚地说明问题陈述。

我有一个字符串:'( 5m 3s ) John: Hi <br> Hello <br>( 6m 2s ) Jane: Hello<br>'

我正在尝试匹配字符串以将每条消息提取为每行1行。

1st group: ( 5m 3s ) John: Hi <br> Hello <br>
2nd group: ( 6m 2s ) Jane: Hello<br>

有人可以为正则表达式提供建议吗? 这就是我目前正在尝试使用的,我无法告诉正则表达式中的最后一个突破:

(.*?).*?:.*?<br>

2 个答案:

答案 0 :(得分:2)

此正则表达式模式与您的3组相匹配。第一组是时间(括号之间的所有内容),第二组(括号之后和冒号之前),第三组是消息(冒号后)。

\((.*)\)([^:]*):(.*)

为了开发正则表达式,您可以使用在线正则表达式测试器,例如https://regex101.com/。这很简单,每种可能的模式都有解释。

答案 1 :(得分:0)

括号是特殊的正则表达式字符,你想要转义它们以匹配它们,这样:\(.*\) 使用\(.*\),您将匹配整个时间部分。 对于John部分,您可以从空格(\W)开始匹配,并以列结束:\W.*: 对于hi,请从列开始,然后继续::.*

要知道,你只有那个字符串,或者它是一个你想要在更大的文本中匹配的字符串?因为在这种情况下,您需要注意在Hi部分

之后停止的位置