我有一个这样的字符串:
:1-2-35:2-3-1:5-6-27456:35-2-11:9-5-6:1-5-2:我想要得到所有包含数字2的组,字符串总是由3个数字组成的组,中间有破折号。
因此,我的正则表达式将返回以下内容:
1 => :1-2-35:
2 => :2-3-1:
3 => :35-2-11:
4 => :1-5-2:我已经尝试过了,但没有成功::\d*2-|-2-|2-\d*:
谢谢你的帮助。
发布于 2013-06-06 20:29:33
您可以尝试这个正则表达式
[^:]*(?<=[-:])2(?=[-:])[^:]*[^:]表示匹配除:之外的任何字符
除:外,[^:]*将匹配0到许多字符
仅当后跟-或:时,2(?=[-:])才会匹配2
只有前面是-或:,(?<=[-:])2才会匹配2
或
[^:]*\b2\b[^:]*发布于 2013-06-06 20:31:31
如果组始终包含3个数字(和2个破折号),则可以使用如下正则表达式:
:(2-\d+-\d+|\d+-2-\d+|\d+-\d+-2)(?=:)(请注意,根据您使用的语言的正则表达式实现,它可能会略有不同。)
另请参阅PHP中的。
发布于 2013-06-06 20:32:02
您可以使用以下命令:
(?<=:)(?:2-\d+-\d+|(?:\d+-){1,2}2\b[^:]*)https://stackoverflow.com/questions/16962040
复制相似问题