Java中regex matcher\G(上一个匹配的结尾)的示例会很好
您是否有边界匹配器“\G”``的有用示例?请给我一些真实世界的例子。欢迎使用Java源代码。从“精通正则表达式。Jeffrey E.F.Friedl”中,我得到了一个解析HTML的有用示例,但我不确定如何将其翻译成Java。以下是一个示例:Java中regex matcher\G(上一个匹配的结尾)的示例会很好,java,regex,Java,Regex,您是否有边界匹配器“\G”``的有用示例?请给我一些真实世界的例子。欢迎使用Java源代码。从“精通正则表达式。Jeffrey E.F.Friedl”中,我得到了一个解析HTML的有用示例,但我不确定如何将其翻译成Java。以下是一个示例: Pattern p = Pattern.compile("\\Gfoo"); Matcher m = p.matcher("foo foo"); String trueFalse = m.find() + ", " + m.find(
Pattern p = Pattern.compile("\\Gfoo");
Matcher m = p.matcher("foo foo");
String trueFalse = m.find() + ", " + m.find();
System.out.println(trueFalse);
Pattern p1 = Pattern.compile("foo");
Matcher m1 = p1.matcher("foo foo");
String trueTrue = m1.find() + ", " + m1.find();
System.out.println(trueTrue);
这是一个基于正则表达式的解决方案,可引入数千个分隔符:
String separateThousands(String s) {
return s.replaceAll(
"(?<=\\G\\d{3})(?=\\d)" + "|" + "(?<=^-?\\d{1,3})(?=(?:\\d{3})+(?!\\d))",
","
);
}
您不需要使用正则表达式,但我确信有一些“现实生活”场景是这种技术的变体。很抱歉问,“现实世界”场景在哪里?这很好。我希望其他作者能提供更多真实世界的例子。我不明白
“(?:%s)|(?:%s)”的意义。
?这应该是“%s |%s”
@christoff:我只是在一般情况下玩得非常安全,在这种情况下,“左”或“右”可以有自己的顶级替换,但我认为你是对的:即使在这种情况下,它仍然有效。我最近提出了一个类似的问题:
String longline = "abcdefghijklmnopqrstuvwxyz";
for (String line : longline.split("(?<=\\G.{6})")) {
System.out.println(line);
}
/* prints:
abcdef
ghijkl
mnopqr
stuvwx
yz
*/