2017-04-25 86 views
-3

对字符串的较小更新,因为我没有在第一次时明确地描述问题陈述。正则表达式:将字符串拆分为组

我有一个字符串:'(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>

+0

之后停止。每种编程语言都有自己的正则表达式。那么你使用哪种语言?请添加适当的标签。 – reporter

+0

定义“部分”。括号是“时间部分”的一部分吗?冒号是“名字部分”的一部分吗? – ClasG

+0

我正在使用顶点。括号和冒号是标识符,因为上面会有多行,而我试图使用正则表达式来操作字符串以匹配模式。 –

回答

2

这个表达式模式,将3组相匹配。第一组是时间(括号内的所有内容),第二个名称(括号后面和冒号前面),第三个是消息(冒号后面)。

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

为了开发正则表达式,你可以使用在线正则表达式,比如https://regex101.com/。这很容易,并且对每种可能的模式都有解释。

0

括号是特殊的正则表达式的性格,你想逃避他们,以配合他们,是这样的:\(.*\) 随着\(.*\),你会匹配整个时间的一部分。 至于约翰一部分,你可以匹配它开始与一个空格(\W),并与柱结尾:\W.*: 为喜,以列开始并继续::.*

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

+1

嗨,欢迎来到StackOverflow!您应该查看编辑器中的格式选项 - 例如,除非用反引号括起来,否则星号将用作斜体标记。另外,'\ s'是空格的标记,而不是'\ W'(匹配非字母数字字符)。 –

+1

修复了它们的格式。 – alexis

相关问题