单词之间的正则表达式
Posted
技术标签:
【中文标题】单词之间的正则表达式【英文标题】:Regex Between word 【发布时间】:2015-10-21 03:47:57 【问题描述】:我有字符串
Yangebup,澳大利亚珀斯,日期:2011-01-09
印度尼西亚雅加达,日期 2013-08-24
所以我想获取位置名称Yangebup, Perth, Australia
和Jakarta, Indonesia
如何使用正则表达式获取该位置名称?我曾尝试使用此代码.+?,\bDated\b
,但结果是找不到匹配。
我还尝试使用 regexpal.com 来测试我的正则表达式,使用此代码 .+\bdated\b
我可以得到它,但我必须使用不区分大小写 (i) 并且当我在我的 java 程序上编写它时结果仍然没有.
【问题讨论】:
【参考方案1】:使用这个正则表达式模式:
^(.*), Dated \d4-\d2-\d2$
List<String> locations = new ArrayList<String>();
locations.add("Yangebup, Perth, Australia, Dated 2011-01-09");
locations.add("Jakarta, Indonesia, Dated 2011-01-09");
String pattern = "^(.*), Dated \\d4-\\d2-\\d2$";
Pattern r = Pattern.compile(pattern);
for (String location : locations)
Matcher m = r.matcher(location);
if (m.find())
System.out.println("Found a location: " + m.group(1) );
else
System.out.println("NO MATCH");
输出:
Found a location: Yangebup, Perth, Australia
Found a location: Jakarta, Indonesia
【讨论】:
这是一个很好的模式,但我的问题是如何获得印度尼西亚的雅加达。实际上我有大约7000个这样的位置,里面有3个多字。如何获取所有位置名称? 这也适用于Jakarta, Indonesia, Dated 2013-08-24
。如果除了正则表达式之外,您还想分隔城市和国家/地区对,您可以尝试使用String.split()
。
实际上我可以得到结果,但我仍然困惑如何获得另一个位置,如果我有不同的字符串并且我必须始终更改所有匹配器?以上是关于单词之间的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章