【问题标题】: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 程序上编写它时结果仍然没有.

【问题讨论】:

    标签: java regex database word between


    【解决方案1】:

    使用这个正则表达式模式:

    ^(.*), Dated \d{4}-\d{2}-\d{2}$
    
    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 \\d{4}-\\d{2}-\\d{2}$";
    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()
    • 实际上我可以得到结果,但我仍然困惑如何获得另一个位置,如果我有不同的字符串并且我必须始终更改所有匹配器?
    猜你喜欢
    • 2021-09-21
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 2016-12-09
    • 2017-12-24
    • 1970-01-01
    相关资源
    最近更新 更多