我在Java中使用这种字符串格式:
Roma Termini 15:00 Milano Centrale 17:55 02:55 FRECCIAROSSA 9638 Price starting from 86.00 ? Select
结果必须是:
Roma Termini
15:00
Milano Centrale
17:55
02.55
FRECCIAROSSA
9638
86.00
像'Roma Termini'这样的子串可以包含括号。例如。 'Roma(tutte le stazioni)'
我尝试了Matcher
的各种解决方案,但结果是错误的。
答案 0 :(得分:1)
对于您的示例输入字符串,您希望从输出中排除“不太重要”的内容,例如"Price starting from"
。您似乎想要遍历原始/目的地/时间(相对重要的数据)等数据。
您应该问自己,您的输入字符串来自哪里?在一组查询后从数据库中?解析XML文件后?回答它然后使用相同的资源来构建您想要的输出。这是合理的方法,不要浪费你的时间来解析你的输入字符串。
答案 1 :(得分:0)
试试这个正则表达式:
[A-Z]\w+\s([A-Z]\w+|[\(].*[\)])+|([0-9:]+(?:(\.[\s]|\.)[0-9]*)?)
使用以上内容:
String s="Roma Termini 15:00 Milano Centrale 17:55 02:55 FRECCIAROSSA 9638 Price starting from 86.00 ? Select";
Pattern regex = Pattern.compile("[A-Z]\\w+\\s([A-Z]\\w+|[\\(].*[\\)])+|([0-9:]+(?:(\\.[\\s]|\\.)[0-9]*)?)");
Matcher matcher = regex.matcher(s);
while (matcher.find()) {
System.out.println(matcher.group());
}