Java 正则表达式替换除双引号外的所有逗号
我想用正则表达式替换java中除双引号以外的所有逗号。我将输出作为Java 正则表达式替换除双引号外的所有逗号,java,regex,Java,Regex,我想用正则表达式替换java中除双引号以外的所有逗号。我将输出作为\“Lee圆领,打印\”\410.00\300.00 \“红蓝\”\Lee“ 但我得到的是“Lee圆领”印刷品“410.00 300.00”“红蓝”#Lee String line="\"Lee Rounded Neck, Printed\" 410.00 300.00,\"Red Blue\",lee"; String repl = line.replaceAll("(?!\")\\,", "#"); Syste
\“Lee圆领,打印\”\410.00\300.00 \“红蓝\”\Lee“
但我得到的是“Lee圆领”印刷品“410.00 300.00”“红蓝”#Lee
String line="\"Lee Rounded Neck, Printed\" 410.00 300.00,\"Red Blue\",lee";
String repl = line.replaceAll("(?!\")\\,", "#");
System.out.println("Replaced => " + repl);
请有人在这方面帮助我试试看
line.replaceAll(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", "#");
试试
line.replaceAll(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", "#");
试试
line.replaceAll(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", "#");
试试
line.replaceAll(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", "#");
不带正则表达式:
String line="\"Lee Rounded Neck, Printed\" 410.00 300.00,\"Red Blue\",lee";
System.out.println(line);
char[] line2 = line.toCharArray();
boolean insideQuotes = false;
for (int i = 0; i < line.length(); ++i) {
if (line.charAt(i) == '\"')
insideQuotes = !insideQuotes;
else if (line.charAt(i) == ',' && !insideQuotes)
line2[i] = '#';
}
line = String.valueOf(line2);
System.out.println(line);
不带正则表达式:
String line="\"Lee Rounded Neck, Printed\" 410.00 300.00,\"Red Blue\",lee";
System.out.println(line);
char[] line2 = line.toCharArray();
boolean insideQuotes = false;
for (int i = 0; i < line.length(); ++i) {
if (line.charAt(i) == '\"')
insideQuotes = !insideQuotes;
else if (line.charAt(i) == ',' && !insideQuotes)
line2[i] = '#';
}
line = String.valueOf(line2);
System.out.println(line);
不带正则表达式:
String line="\"Lee Rounded Neck, Printed\" 410.00 300.00,\"Red Blue\",lee";
System.out.println(line);
char[] line2 = line.toCharArray();
boolean insideQuotes = false;
for (int i = 0; i < line.length(); ++i) {
if (line.charAt(i) == '\"')
insideQuotes = !insideQuotes;
else if (line.charAt(i) == ',' && !insideQuotes)
line2[i] = '#';
}
line = String.valueOf(line2);
System.out.println(line);
不带正则表达式:
String line="\"Lee Rounded Neck, Printed\" 410.00 300.00,\"Red Blue\",lee";
System.out.println(line);
char[] line2 = line.toCharArray();
boolean insideQuotes = false;
for (int i = 0; i < line.length(); ++i) {
if (line.charAt(i) == '\"')
insideQuotes = !insideQuotes;
else if (line.charAt(i) == ',' && !insideQuotes)
line2[i] = '#';
}
line = String.valueOf(line2);
System.out.println(line);
以下是它在Perl中的外观:
s/((?:[^“,]|“(?:[^“\]\\\)*”),/$1#/g
。这也允许“
在带引号的字符串中用反斜杠转义。$1
指第一个括号内的表达式;我希望有一种方法用Java来表达。以下是它在Perl:中的外观:/((?:[^“,]|“(?:[^“\\]\\\\)*”),/$1#/g
。这也允许“
在”
带引号的字符串中用反斜杠进行转义。$1
引用了第一个带括号的表达式;我希望有一种方法可以在Java中表达这一点。以下是它在Perl:s/(?:[^>,],],][/code>中的样子(?:\*),/$1#/g
。这也允许“
在带引号的字符串中用反斜杠转义。$1
指的是第一个带括号的表达式;我希望有一种方法可以用Java来表达。以下是它在Perl中的外观:s/(?:[^,]|“(?:[^”\],](?:[^“\”)*),/$1
。这也允许”
在带引号的字符串中用反斜杠转义。$1
指的是第一个带括号的表达式;我希望有一种方法可以用Java来表示。