你有边界匹配器 "\G"` 的任何有用的例子吗?请给我一些真实世界的例子。Java 源代码表示赞赏。从“掌握正则表达式。Jeffrey EF Friedl”我得到了一个解析 HTML 的有用示例,但我不确定是否可以翻译成 Java。
这是一个基于正则表达式的引入千位分隔符的解决方案:
String separateThousands(String s) {
return s.replaceAll(
"(?<=\\G\\d{3})(?=\\d)" + "|" + "(?<=^-?\\d{1,3})(?=(?:\\d{3})+(?!\\d))",
","
);
}
Run Code Online (Sandbox Code Playgroud)
这将转换"-1234567890.1234567890"为"-1,234,567,890.1234567890".
\G.这个更抽象,但你可以使用\G固定长度的lookbehind将split一个长字符串分成固定宽度的块:
String longline = "abcdefghijklmnopqrstuvwxyz";
for (String line : longline.split("(?<=\\G.{6})")) {
System.out.println(line);
}
/* prints:
abcdef
ghijkl
mnopqr
stuvwx
yz
*/
Run Code Online (Sandbox Code Playgroud)
您不需要为此使用正则表达式,但我确信存在这种技术变体的“现实生活”场景。