比如:
String source = "\"ab,cd\",\"how are you\",\"oh my \",god\"";如何将其split为:
"ab,cd"
"how are you"
"oh my \", god"其中逗号(,)是字符串序列的分隔符, 双引号(")是定界符,但字符串中也可以出现逗号,双引号.请高手帮我想一个正则表达式来切分字符串序列。谢谢!
String source = "\"ab,cd\",\"how are you\",\"oh my \",god\"";如何将其split为:
"ab,cd"
"how are you"
"oh my \", god"其中逗号(,)是字符串序列的分隔符, 双引号(")是定界符,但字符串中也可以出现逗号,双引号.请高手帮我想一个正则表达式来切分字符串序列。谢谢!
但是这里具有\",这就没有规律了.到底要不要双引号呢?
"ab,cd","how are you","oh my ",god"
JAVA中打印的是这个,
"oh my \", god" 并没有这个啊楼主再把题目看看吧不然真的没有规律
双引号和逗号,也可以出现在字符串中,比如: "how, to\" do"我也是苦于找不出规律来
的文本输出应该是"oh my ", god"
"\"abc\",\"def\",\"ghi\""逗号作为分隔符,双引号作为字符串的定界符,且字符串内不准包含逗号和双引号, 正则表达式该如何表达?"abc"
"def"
"ghi"
你的\"oh my \",god\" 要是能改成\"oh my ',god\"就简单多了 ;或者\"oh my \",god\"改成'oh my \",god'也很简单
\"ab,cd\"
按照你后面的逻辑,前面的"ab,cd\"也可以解释为ab,cd\吧把oh my \ 改为oh my \\吧
我们要相信:正则是无所不能的!!!public class Test4 {
public static void main(String[] args) {
String source = "\"ab,cd\",\"how are you\",\"oh my \",god\",\"aa,\"bb\"";
String reg = "(?<![^\",]),(?=\")";
String[] array = source.split(reg);
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}
这种情况就会产生歧义!这个到底表示 "aa","bb" 呢还是表示 "aa" 和 "bb" 呢?
import java.util.regex.Pattern;public class Test01 {
public static void main(String[] args) {
String str = "\"ab,cd\",\"how are you\",\"oh my\"\",god\"";
String regex = "\\G(?:^|,)(?:\"([^\"]*+(?:\"\"[^\"]*+)*+)\"|([^\",]*+))";
Matcher main = Pattern.compile(regex).matcher(str);
Matcher mquote = Pattern.compile("\"\"").matcher("");
while (main.find()) {
String field;
if (main.start(2) >= 0) {
field = main.group(2);
} else {
field = mquote.reset(main.group(1)).replaceAll("\"");
}
System.out.println("Field [" + field + "]");
}
}
}
谢谢了,
根据你的建议,我想先将所有\"替换成\"\", 然后编码成JSON格式,然后再decode.
例如:
String name = "Zhu, Jianqiang";
String description = "It's \"Zhu, Jianqiang\"";Step 1, 替换:
Zhu, Jianqiang
It's ""Zhu, Jianqiang"""Step 2, 编码:
encode后的结果: [\"Zhu, Jianqiang\", \"It's \"\"Zhu, Jianqiang\"\"\"]Step 3, 解码:
然后采用你提供的pattern,就可分解为:
Zhu, Jianqiang
It's "Zhu Jianqiang"
String src = "\"How \"are you\"";
GSON.fromJson( src, String.class);
结果是:
How只能写成如下样式:
String src = "\"How \\\"are you\"";
GSON.fromJson( src, String.class);
结果是:
How "are you
这个直接用split根据逗号和双引号分割字符串