单词之间的正则表达式

Posted

技术标签:

【中文标题】单词之间的正则表达式【英文标题】:Regex Between word 【发布时间】:2015-10-21 03:47:57 【问题描述】:

我有字符串

Yangebup,澳大利亚珀斯,日期:2011-01-09

印度尼西亚雅加达,日期 2013-08-24

所以我想获取位置名称Yangebup, Perth, AustraliaJakarta, 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() 实际上我可以得到结果,但我仍然困惑如何获得另一个位置,如果我有不同的字符串并且我必须始终更改所有匹配器?

以上是关于单词之间的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

单词之间的正则表达式

使用正则表达式获取用换行符分隔的单词之间的文本

正则表达式:匹配空格之间的单词

提取单词和单词之前,并在正则表达式中的“_”之间插入

如何使用正则表达式在()之间插入一个单词

用于在 = 和 ; 之间捕获单词的正则表达式