gpt4 book ai didi

Java 和 Javascript 正则表达式

转载 作者:行者123 更新时间:2023-12-01 09:29:59 25 4
gpt4 key购买 nike

我试图用新行替换字符串中的每 4 个逗号。

在下面的 JavaScript 中效果很好

 var str = "blue,red,green,orange,yellow,brown,black,teal,purple,gold,silver"
str = str.replace(/(([^,]*,){4}([^,]*)),/g, '$1\n').

并给我正确的输出,如下所示:

蓝、红、绿、橙、黄
棕色、黑色、青色、紫色、金色

我正在尝试用java做同样的事情

String str = "blue,red,green,orange,yellow,brown,black,teal,purple,gold,silver";
str = str.replaceAll("([^,]*,){4}([^,]*)", "$1\n");

输出:
橙色,
青色,
,金,银

谁能帮我得到正确的表达式,用java中的新行替换第n(第四)个逗号

最佳答案

在 JavaScript 模式中,您有两个嵌套在一个选择组中的选择组,$1 引用该选择组以及其中的其他两个选择组。

在 Java 模式中,您有两个选择组,没有其他选择组,$1 引用第一个选择组,而不是像 JavaScript 模式中那样包含其他两个选择组。

删除 JavaScript 中第一个选择组的大括号会产生意外结果,因此在 Java 模式周围添加大括号应该可以解决您的问题。

出了什么问题

第一个模式的选择组 sls

之前

//JavaScript
var str = "blue,red,green,orange,yellow,brown,black,teal,purple,gold,silver"
str = str.replace(/(([^,]*,){4}([^,]*)),/g, '$1\n').
//Output:
//blue,red,green,orange,yellow
//,brown,black,teal,purple
//,gold,silver

//Java
String str = "blue,red,green,orange,yellow,brown,black,teal,purple,gold,silver";
str = str.replaceAll("([^,]*,){4}([^,]*)", "$1\n");
//Output:
//orange,
//teal,
//,gold,silver

Regexr for Java pattern (not fixed yet)

之后

//JavaScript
var str = "blue,red,green,orange,yellow,brown,black,teal,purple,gold,silver"
str = str.replace(/(([^,]*,){4}([^,]*)),/g, '$1\n').
//Output:
//blue,red,green,orange,yellow
//,brown,black,teal,purple
//,gold,silver

//Java
String str = "blue,red,green,orange,yellow,brown,black,teal,purple,gold,silver";
str = str.replaceAll("(([^,]*,){4}([^,]*)),", "$1\n");
// These were added --^------------------^^
//Output:
//blue,red,green,orange,yellow
//,brown,black,teal,purple
//,gold,silver

Regexr for Java pattern (fixed)

关于Java 和 Javascript 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39517002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com