我写了一个简单的正则表达式
String s = "#!key1 #!compound.key2 #!super.compound.key3";
Matcher matcher = Pattern.compile("(?<=#!)(\\w+\\.*\\w+)+").matcher(s);
while (matcher.find()) {
System.out.println(matcher.group());
}
结果
key1
compound.key2
super.compound
我想知道为什么它与super.compound
匹配,但与我期望的super.compound.key3
不匹配。
key1
compound.key2
super.compound.key3
欢迎对正则表达式进行任何改进。
答案 0 :(得分:5)
您需要使用
(?<=#!)\w+(?:\.\w+)*
请参见regex demo和正则表达式图:
String s = "#!key1 #!compound.key2 #!super.compound.key3";
Matcher matcher = Pattern.compile("(?<=#!)\\w+(?:\\.\\w+)*").matcher(s);
while (matcher.find()) {
System.out.println(matcher.group());
}
// => [key1, compound.key2, super.compound.key3]
答案 1 :(得分:0)
我想这样写正则表达式(?<=#!)(\\ w + \\。?)+ 。