java - 如何轻松解析这个字符串?

标签 java string parsing split

所以我想从表单上的某些内容中提取数据:

“圣地亚哥”--“圣安东尼奥”[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/

相关文章:

mysql - 如何从 MySQL 查询中的电子邮件地址中删除 'plus' 标签?

parsing - 如何解析维基词典API?

Java & LibGDX : Limit Rendering Range of a Sprite

java - 将 Collections.Frequency 与 List<SomeBeanType> 一起使用

java - EntityUtils.toString 进入 IOException

c - 如何正确传递这个c字符串数组

java - 你如何在java项目中嵌入Tomcat?

java - 在较少重复的代码或高效但重复的代码之间进行选择

ruby-on-rails - Ruby:从字符串中提取单词

python - Python 中的 SGML 解析器