寻找围绕任何字符之一的任何字符,包括其自身

Look for any character that surrounds one of any character including itself

我正在尝试编写一个正则表达式代码来查找以下字符串中包含自身在内的任何字符之一周围的任何字符的所有示例:

b9fgh9f1;2w;111b2b35hw3w3ww55

所以“b2b”和“111”是有效的,但“3ww5”不是。

有人可以帮我解决这个问题吗?

谢谢, 尼克尔

您可以使用此正则表达式匹配三个字符,其中第一个和第三个使用反向引用相同,中间可以是任何字符,

(.).

Demo

编辑:

上面的正则表达式只会给你不重叠的匹配,但如果你想得到所有甚至重叠的匹配,你可以使用这个基于积极前瞻的正则表达式,它不消耗接下来的两个字符,而是将它们分组group2 因此对于您想要的输出,您可以附加 group1 和 group2 中的字符。

(.)(?=(.))

Demo with overlapping matches

这是一个 Java 代码(我从来没有用 Ruby 编程过)演示代码和您可以用您喜欢的编程语言编写的相同逻辑。

String s = "b9fgh9f1;2w;111b2b35hw3w3ww55";
Pattern p = Pattern.compile("(.)(?=(.\1))");
Matcher m = p.matcher(s);

while(m.find()) {
    System.out.println(m.group(1) + m.group(2));
}

打印所有你想要的匹配项,

111
b2b
w3w
3w3
w3w

此外,这里有一个 Python 代码,如果您知道 Python,

可能会有所帮助
import re

s = 'b9fgh9f1;2w;111b2b35hw3w3ww55'

matches = re.findall(r'(.)(?=(.))',s)
for m in re.findall(r'(.)(?=(.))',s):
 print(m[0]+m[1])

打印所有预期的匹配项,

111
b2b
w3w
3w3
w3w