我正在尝试编写一个正则表达式代码,以查找在以下字符串中包含任何字符(包括其自身)的任何字符的所有示例:
b9fgh9f1; 2w; 111b2b35hw3w3ww55
因此,“ b2b”和“ 111”有效,但“ 3ww5”无效。
有人可以在这里帮我吗?
谢谢, 尼基尔
答案 0 :(得分:-1)
您可以使用此正则表达式来匹配三个字符,其中第一个和第三个相同(使用反向引用),中间可以是任意字符,
(.).\1
编辑:
上面的正则表达式只会为您提供不重叠的匹配项,但是当您希望获得所有甚至重叠的匹配项时,您可以使用基于正向前瞻性的正则表达式,它不会消耗接下来的两个字符,而是将它们分组在group2中,因此对于所需的输出,您可以追加group1和group2中的字符。
(.)(?=(.\1))
这是Java代码(我从未用Ruby编程过),展示了该代码以及可以使用fav编程语言编写的相同逻辑。
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'(.)(?=(.\1))',s)
for m in re.findall(r'(.)(?=(.\1))',s):
print(m[0]+m[1])
打印所有预期的匹配项,
111
b2b
w3w
3w3
w3w