所以我想从表单上的某些内容中提取数据:
“圣地亚哥”--“圣安东尼奥”[1319]
我想提取城市名称和括号[]中末尾的数字。如果城市是一个单词,则没有“”,如下例所示:
托莱多--斯普林菲尔德 [677]
现在我正在使用 str.split("--"),然后使用 str.split("[")。然而后者是不可能的,如果我尝试使用 split("") 它将在两个单词城市的中间分割。
最佳答案
正则表达式似乎被占用:
"?(.*?)"?--"?(.*?)"? \[(.*?)]
在 Java 中:
Pattern p = Pattern.compile("\"?(.*?)\"?--\"?(.*?)\"? \\[(.*?)]");
Matcher m = p.matcher("\"San Diego\"--\"San Antonio\" [1319]");
if (m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
}
打印:
San Diego
San Antonio
1319
<小时/>
正则表达式解释
"?
表示“是否为”
.*?
表示“任何字符串”- 括号捕获它们之间的数据,这就是为什么之后我们可以使用
m.group(...)
访问它们。
关于java - 如何轻松解析这个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16123098/