Java正则表达式:拆分逗号分隔的值,但忽略引号中的逗号
我的案文如下:Java正则表达式:拆分逗号分隔的值,但忽略引号中的逗号,java,regex,Java,Regex,我的案文如下: "text","1","more, more text","3" 有谁能告诉我我必须使用什么regex delimeters才能获得以下信息: text 1 more, more text 3 在“matcher类的方法”之前,我一直在阅读Sun教程,但我仍然不知所措。谢谢 如果它是类似于text,1,more的东西,那就很容易了,但不幸的是,它不是这样的。有什么想法吗?你可以得到每一个以“开头的部分,然后用另一个”结尾,然后用子字符串替换每个部分的第一个和最后一个字符。你可
"text","1","more, more text","3"
有谁能告诉我我必须使用什么regex delimeters才能获得以下信息:
text
1
more, more text
3
在“matcher类的方法”之前,我一直在阅读Sun教程,但我仍然不知所措。谢谢
如果它是类似于
text,1,more
的东西,那就很容易了,但不幸的是,它不是这样的。有什么想法吗?你可以得到每一个以“
开头的部分,然后用另一个”
结尾,然后用子字符串替换每个部分的第一个和最后一个字符。你可以得到每一个以“
开头,最后用另一个结尾的部分。”
然后对每个部分的第一个和最后一个字符进行子串。您可以尝试类似的方法。我知道,这不是一个好的解决方案,但它可以帮助您:)
你可以试试那样的。我知道,这不是一个好的解决方案,但它可以帮助您:)
你可以试试这个
[^\“]+(?你可以试试这个[^\“]+(?你可以直接使用split()方法,如下所示:
String text = "\"text\",\"1\",\"more, more text\",\"3\"";
String[] split = text.split("\"(,\")?");
for (String string : split) {
System.out.println(string);
}
Pattern pattern = Pattern.compile("\"([^\"]+)\"");
Matcher matcher = pattern.matcher(text);
while(matcher.find()){
System.out.println(matcher.group(1));
}
(注意,这将返回长度为5的数组,第一个位置是空字符串)
或者,如果您想使用模式/匹配器,可以这样做:
String text = "\"text\",\"1\",\"more, more text\",\"3\"";
String[] split = text.split("\"(,\")?");
for (String string : split) {
System.out.println(string);
}
Pattern pattern = Pattern.compile("\"([^\"]+)\"");
Matcher matcher = pattern.matcher(text);
while(matcher.find()){
System.out.println(matcher.group(1));
}
您可以直接使用split()方法,如下所示:
String text = "\"text\",\"1\",\"more, more text\",\"3\"";
String[] split = text.split("\"(,\")?");
for (String string : split) {
System.out.println(string);
}
Pattern pattern = Pattern.compile("\"([^\"]+)\"");
Matcher matcher = pattern.matcher(text);
while(matcher.find()){
System.out.println(matcher.group(1));
}
(注意,这将返回长度为5的数组,第一个位置是空字符串)
或者,如果您想使用模式/匹配器,可以这样做:
String text = "\"text\",\"1\",\"more, more text\",\"3\"";
String[] split = text.split("\"(,\")?");
for (String string : split) {
System.out.println(string);
}
Pattern pattern = Pattern.compile("\"([^\"]+)\"");
Matcher matcher = pattern.matcher(text);
while(matcher.find()){
System.out.println(matcher.group(1));
}
尝试以下模式:“(.+?)”
它将在双引号之间匹配1个或多个字符。引号之间的文本部分可用作matcher.group(1)
查看javadoc中的模式
类了解更多信息。此外,还可以查看matcher.find()
方法。尝试以下模式:“(.+?)”
"[^"]*"
它将在双引号之间匹配1个或多个字符。引号之间的文本部分可用作matcher.group(1)
查看javadoc中的Pattern
类以了解更多信息。此外,还可以查看matcher.find()
方法
"[^"]*"
看来是的!
在java字符串中,您可以使用
"\"[^\"]*\""
您可以在此处进行在线测试:
看来是的!
在java字符串中,您可以使用
"\"[^\"]*\""
您可以在此处进行在线测试:非常好。我将解析文本以删除第一个引号(处理空字符串)并使用正则表达式。谢谢!非常好。我将解析文本以删除第一个引号(处理空字符串)并使用正则表达式。谢谢!+1我一直在寻找该模式(匹配一个或多个字符)。谢谢!+1我已经寻找该模式很久了(匹配一个或多个字符)。谢谢!它在网站上运行,但当我在java中尝试时,它返回一个空字符串和四个逗号。非常好的网站bdw:)它可以在配额之间查找任意数量的非配额符号。也就是说,它可以在空字符串(“,”qwert,tyy“,”)中正常工作。请尝试以下代码:public static void main(String[]args){String text=“\”text\”,\“1\”,\“more,more text\”,\“3\”;String[]split=text.split(“[^\”]*”);for(String-String-String:split){System.out.println(string);}}
它在网站上工作,但是当我在java中尝试它时,它返回一个空字符串和四个逗号。非常好的网站bdw!:)它可以在配额之间找到任意数量的非配额符号。也就是说,它在空字符串(“,”qwert,tyy“,”)上工作。请尝试以下代码:public static void main(String[]args){String text=“\'text\”,\'1\”,\'more,more text\”,\'3\”;String[]split=text.split(\“\”[^\”]*\”);for(String-String:split){System.out.println(String);}