簡體   English   中英

Java和Javascript正則表達式

[英]Java and Javascript regular expression

我正在嘗試用新行替換字符串的每個第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中的新行替換nth(fourth)逗號

在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

Java模式的Regexr(尚未修復)

//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

Java模式的Regexr(已修復)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM