我正在尝试使用正则表达式拆分字符串。例如:
12 13: 14: 15 => One-12, Two-13 , Three-14: 15
我正在尝试使用以下正则表达式:
^(?P< one>.*)\\s(?P< two>.*):\\s(?P< three>.*)$
所以当我看到它时,“one”应该是第一个“space”(\ s)之前的值,然后直到下一个冒号(:),该值应为“2”,之后的所有内容应为“3”。
但我得到的输出是:One-12 13:,Two-14,Three-15
注意:这是Golang类型的正则表达式,但我想这是一个普通的正则表达式问题。请帮我解决这个问题。
答案 0 :(得分:2)
问题可能在于它试图对最左边的模式进行最长时间的匹配。如果是这种情况,请尝试更改原始
^(?P< one>.*)\\s(?P< two>.*):\\s(?P< three>.*)$
here......^
不允许在这些字符中使用冒号 - [^:]
如果像普通的sed正则表达式一样。为安全起见,如果一条线上可能有两个以上的冒号,也可以在第二部分进行。
^(?P<one>[^:]*)\\s(?P<two>[^:]*):\\s(?P<three>.*)$
编辑:
在将\\s
更改为\s
并删除模式名称中的原始空格后,这似乎会根据this tester产生差异。同样here。