【问题标题】:proper regex with boundary matches具有边界匹配的正确正则表达式
【发布时间】:2015-09-08 05:22:09
【问题描述】:

这是我的输入字符串: 国家 fajfjlajllfsjakljf fj alkfjklajf jafl fjlajl
国际
jfalkj jalkfjda 国家
国际
国际
国际

我想要一个只选择国家而不是国际、国际或国际的正则表达式。 我正在尝试的是 \bnational\b,这会选择除第一行中的第一个匹配项之外的所有情况。

有人可以帮我吗?

【问题讨论】:

  • (?<!\S)national(?!\S)

标签: regex


【解决方案1】:

好像你想要national,它们位于startend或被spaces包围。你可以使用

(?:^|(?<=\s))national(?=\s|$)

See demo

【讨论】:

    【解决方案2】:

    regex

    String[] s = {"national", "fajfjlajllfsjakljf", "fj", "alkfjklajf" ,"jafl", "fjlajl" ,
            "international" ,
            "jfalkj jalkfjda national" ,
            "inter-national", 
            "international", 
            "inter_national"};
    java.util.regex.Pattern p = Pattern.compile("^(national)+$");
    int count = 0;
    for (int i = 0; i < s.length; i++) {
        if (p.matcher(s[i]).find()) {
            count++;
            System.out.println("true");
        } 
    }
    

    【讨论】:

      猜你喜欢
      • 2015-11-16
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 2017-05-26
      相关资源
      最近更新 更多