Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用正则表达式从java中的字符串中提取序列_Java_Regex - Fatal编程技术网

使用正则表达式从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类。我不能用它。检查图案,不能使用分隔符“,”;它不是一个简单的字符串。我从多个来源获得了数据流的输入。这就是问题所在。谢谢大家。它不是一个简单的字符串。我从多个来源获得了数据流的输入。这就是问题所在。谢谢大家。关于罗希特