我有一个这样的字符串。
//Locaton;RowIndex;maxRows=New York, NY_10007;1;4
从此我需要获得纽约唯一的名称。 如何在单步代码中实现。
我用过..
String str = "Locaton;RowIndex;maxRows=New York, NY_10007;1;4 ";
str = str.split("=")[1];
str = str.split(",")[0]
上面的代码包含了很多分裂。我怎么能避免thiis。 我想只使用单一代码获取contry名称。
答案 0 :(得分:4)
尝试使用此正则表达式"=(.*?),"
,如下所示:
String str = "Locaton;RowIndex;maxRows=New York, NY_10007;1;4 ";
Pattern pattern = Pattern.compile("=(.*?),");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
System.out.println(matcher.group(1));
}
输出:
New York
使用
matcher.group(1)
表示捕获组可以轻松提取部分正则表达式匹配,括号也可以创建编号的捕获组。 它将正则表达式部分匹配的字符串部分存储在括号内。
Match "Locaton;RowIndex;maxRows=New York, NY_10007;1;4 "
Group 1: "New York"
答案 1 :(得分:1)
使用带有正则表达式的捕获组,可完美捕获字符串中的特定数据。
String str = "Locaton;RowIndex;maxRows=New York, NY_10007;1;4 ";
String pattern = "(.*?=)(.*?)(,.*)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(str);
if (m.find()) {
System.out.println("Group 1: " + m.group(1));
System.out.println("Group 2: " + m.group(2));
System.out.println("Group 3: " + m.group(3));
}
这是输出
Group 1: Locaton;RowIndex;maxRows=
Group 2: New York
Group 3: , NY_10007;1;4