我的文字如下:
"text","1","more, more text","3"
有人可以告诉我我必须使用什么正则表达式来获取以下内容:
text
1
more, more text
3
我正在阅读Sun教程here,直到" matcher类的方法"但我仍然不知所措。谢谢!
如果它像text,1,more
那样容易,但不幸的是,它不是那样的。有什么想法吗?
答案 0 :(得分:3)
尝试此模式:"(.+?)"
它将匹配双引号之间的1个或多个字符。引号之间的文本部分以matcher.group(1)
形式提供。
查看Pattern
类的javadoc以了解更多信息。另外,请查看matcher.find()
方法。
答案 1 :(得分:1)
你可以尝试这个[^\"]+(?<!\",?)
答案 2 :(得分:1)
您可以直接使用split()方法,如下所示:
String text = "\"text\",\"1\",\"more, more text\",\"3\"";
String[] split = text.split("\"(,\")?");
for (String string : split) {
System.out.println(string);
}
(请注意,这将返回长度为5的数组,第一个位置为空字符串)
或者,如果你想使用模式/匹配器,你可以这样做:
Pattern pattern = Pattern.compile("\"([^\"]+)\"");
Matcher matcher = pattern.matcher(text);
while(matcher.find()){
System.out.println(matcher.group(1));
}
答案 3 :(得分:0)
你可以得到以"
开头并以另一个"
结束的每个部分,然后对每个部分的第一个和最后一个字符进行子串。
答案 4 :(得分:0)
你可以试试这样的东西。我知道,这不是一个好的解决方案,但它可以帮助你:)
string[] s=text.split("\",\"");
s[0]=s[0].substring(1);
s[s.length-1]=s[s.length-1].substring(0,s[s.length-1].length);
答案 5 :(得分:0)