使用正则表达式从java中的字符串中提取序列
我有一个有图案的圆木。事情是在最后,它有点不同于常规使用正则表达式从java中的字符串中提取序列,java,regex,Java,Regex,我有一个有图案的圆木。事情是在最后,它有点不同于常规 a> nc,71802265,0,"Tuesday, June 26, 2012 09:06:49 UTC",38.8335,-122.8072,1.6,0.00,21,"Northern California" b> ci,11127314,0,"Tuesday, June 26, 2012 08:37:52 UTC",34.2870,-118.3360,2.2,10.20,100,"Greater Los Angeles
a> nc,71802265,0,"Tuesday, June 26, 2012 09:06:49 UTC",38.8335,-122.8072,1.6,0.00,21,"Northern California"
b> ci,11127314,0,"Tuesday, June 26, 2012 08:37:52 UTC",34.2870,-118.3360,2.2,10.20,100,"Greater Los Angeles area, California"
c> us,b000aqpn,6,"Tuesday, June 26, 2012 08:29:55 UTC",53.4819,-165.2794,4.4,25.60,96,"Fox Islands, Aleutian Islands, Alaska"
String regex = "^\\"[a-z,A-Z]\\s*\\(,)*[a-z,A-Z]\\"";
Pattern p = Pattern.compile(regex, Pattern.MULTILINE);
从一个我需要的地方--“北加利福尼亚”
从b我需要--“加州大洛杉矶地区”等等
谢谢您可以使用,从倒数第二个字符开始查找第一个“
:
您可以使用,从倒数第二个字符开始查找第一个“
:
为什么不使用并指定需要拆分的逗号数
这样,您就可以使用逗号完整地获取最后一个字段,然后简单地去掉双引号。为什么不使用并指定需要拆分的逗号数呢
这样,您可以使用逗号完整地获取最后一个字段,然后简单地去掉双引号。使用
$
锚来告诉您的匹配应该在行尾:
String lines = "a> nc,71802265,0,\"Tuesday, June 26, 2012 09:06:49 UTC\",38.8335,-122.8072,1.6,0.00,21,\"Northern California\"\nb> ci,11127314,0,\"Tuesday, June 26, 2012 08:37:52 UTC\",34.2870,-118.3360,2.2,10.20,100,\"Greater Los Angeles area, California\"\nc> us,b000aqpn,6,\"Tuesday, June 26, 2012 08:29:55 UTC\",53.4819,-165.2794,4.4,25.60,96,\"Fox Islands, Aleutian Islands, Alaska\"";
String regex = "\"[^\"]*\"$";
Matcher m = Pattern.compile(regex, Pattern.MULTILINE).matcher(lines);
while (m.find()) {
System.out.println(m.group());
}
产出:
"Northern California"
"Greater Los Angeles area, California"
"Fox Islands, Aleutian Islands, Alaska"
使用
$
锚来告诉您的匹配应该在行的末尾:
String lines = "a> nc,71802265,0,\"Tuesday, June 26, 2012 09:06:49 UTC\",38.8335,-122.8072,1.6,0.00,21,\"Northern California\"\nb> ci,11127314,0,\"Tuesday, June 26, 2012 08:37:52 UTC\",34.2870,-118.3360,2.2,10.20,100,\"Greater Los Angeles area, California\"\nc> us,b000aqpn,6,\"Tuesday, June 26, 2012 08:29:55 UTC\",53.4819,-165.2794,4.4,25.60,96,\"Fox Islands, Aleutian Islands, Alaska\"";
String regex = "\"[^\"]*\"$";
Matcher m = Pattern.compile(regex, Pattern.MULTILINE).matcher(lines);
while (m.find()) {
System.out.println(m.group());
}
产出:
"Northern California"
"Greater Los Angeles area, California"
"Fox Islands, Aleutian Islands, Alaska"
您只需要最后一对双引号中的字符串?你不一定需要正则表达式。是的,准确地说。怎么会。任何暗示或想法都将受到赞赏。是的,确切地说是什么如前所述,对于如此简单的任务,您不需要正则表达式。例如,检查@m0skit0我知道StringTokenizer类。我不能用它。检查图案,不能使用分隔符“,”;您只需要最后一对双引号中的字符串?你不一定需要正则表达式。是的,准确地说。怎么会。任何暗示或想法都将受到赞赏。是的,确切地说是什么如前所述,对于如此简单的任务,您不需要正则表达式。例如,检查@m0skit0我知道StringTokenizer类。我不能用它。检查图案,不能使用分隔符“,”;它不是一个简单的字符串。我从多个来源获得了数据流的输入。这就是问题所在。谢谢大家。它不是一个简单的字符串。我从多个来源获得了数据流的输入。这就是问题所在。谢谢大家。关于罗希特