创建一个没有两个字符的正则表达式匹配字符串的开头。

时间:2013-05-10 18:54:16

标签: java regex

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

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

3 个答案:

答案 0 :(得分:4)

这是写作的一种方式:

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

这意味着第一个字符不是'U',或者第一个字符是'U',那么第二个字符不能是'S'

答案 1 :(得分:3)

只需添加否定前瞻:

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

(问号在这里没用,因为之后有模式结束)

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

^(?!US\b).*$

(别忘了加倍反斜杠)

答案 2 :(得分:1)

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

FIDDLE

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

编写和维护更容易