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