0

如何编写正则表达式来捕获字符串中没有 US 作为前两个字符的字符串?例如CA some text。此字符串应与正则表达式匹配,因为它没有 US 作为前两个字符。但US some text不应该匹配正则表达式。

^(\w{2})(.*?)$是我开始的......但我想将美国排除在前 2 个字符中。

4

3 回答 3

4

这是一种写法:

^([^U]|U[^S]).*$

这意味着第一个字符不是'U',或者当第一个字符是时'U',第二个字符一定不是'S'

于 2013-05-10T18:57:22.537 回答
3

只需添加一个负前瞻:

^(?!US\b)(\w{2})(.*)$

(问号在这里没有用,因为后面有模式的结尾)

如果您只想捕获所有文本而不是特定组中的国家/地区:

^(?!US\b).*$

(不要忘记双反斜杠)

于 2013-05-10T18:57:02.470 回答
1

人们经常想匹配一个否定的。而是测试肯定匹配,然后您的 if 分支是失败分支。例如。

小提琴

if(str.matches('^US.*$')){ 
    // fail 
    // or  
    // str.substring(2)
} else { 
   //pass 
}

编写和维护要容易得多

于 2013-05-10T20:35:13.360 回答