正则表达式 - 查找可以找到给定数字的所有组

mim*_*ipc 3 regex

我有一个像这样的字符串:

:1-2-35:2-3-1:5-6-27456:35-2-11:9-5-6:1-5-2:
Run Code Online (Sandbox Code Playgroud)

我想得到包含数字2 的所有组.字符串总是由3个数字组成,它们之间有一个短划线.

所以我的正则表达式将返回:

1 => :1-2-35:
2 => :2-3-1:
3 => :35-2-11:
4 => :1-5-2:
Run Code Online (Sandbox Code Playgroud)

我试过这个没有成功: :\d*2-|-2-|2-\d*:

谢谢你的帮助.

Ani*_*dha 5

你可以试试这个正则表达式

[^:]*(?<=[-:])2(?=[-:])[^:]*
Run Code Online (Sandbox Code Playgroud)

[^:] 意味着匹配任何字符除外 :

[^:]* 将匹配0到多个字符除外 :

2(?=[-:])只有在跟着-或者后面才会匹配2:

(?<=[-:])2将匹配2只有它前面-:

要么

[^:]*\b2\b[^:]*
Run Code Online (Sandbox Code Playgroud)