Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个不使用';在字符串的开头不能有两个字符匹配。_Java_Regex - Fatal编程技术网

Java 创建一个不使用';在字符串的开头不能有两个字符匹配。

Java 创建一个不使用';在字符串的开头不能有两个字符匹配。,java,regex,Java,Regex,如何编写正则表达式来捕获一个字符串,而该字符串的前两个字符不是US?例如,CA一些文本。这个字符串应该与正则表达式匹配,因为它没有将US作为前两个字符。但是US一些文本不应该与正则表达式匹配 ^(\w{2})(.*)$是我开始时使用的。。。但我想把我们排除在前两个角色之外 只需添加一个负面前瞻: ^(?!US\b)(\w{2})(.*)$ (问号在这里没有用,因为后面是模式的结尾) 如果您只想捕获所有文本,而不想捕获特定组中的国家/地区: ^(?!US\b).*$ (别忘了双反斜杠)这里有一

如何编写正则表达式来捕获一个字符串,而该字符串的前两个字符不是US?例如,
CA一些文本
。这个字符串应该与正则表达式匹配,因为它没有将US作为前两个字符。但是
US一些文本不应该与正则表达式匹配


^(\w{2})(.*)$
是我开始时使用的。。。但我想把我们排除在前两个角色之外

只需添加一个负面前瞻:

^(?!US\b)(\w{2})(.*)$
(问号在这里没有用,因为后面是模式的结尾)

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

^(?!US\b).*$

(别忘了双反斜杠)

这里有一种书写方法:

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

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

人们经常想要匹配负数。相反,测试一个正匹配,然后您的if分支就是失败分支。比如说


编写和维护要容易得多

您使用的是什么语言?不同的语言支持不同的功能。@Bryan它有Java标记。@WChargin:我写评论时没有。如果前两个字符不是我们,我如何捕获它们?@Phoenix:第一个模式是捕获组:
(\w{2})
。如果您不确定必须输入字符,可以用
(.{2})替换它。
我在groovy中尝试过,def pattern=~/^(?!US\\b)(\\w{2})(.*$/assert pattern.matcher(“CA 123”).matches()和它不匹配?@Phoenix:try
System.out.println(“CA 123”).matches(“^(?!US\\b)(\\w{2})(.$”))在您的代码中。在我看来,问题出在其他地方。Casimir如果您已经在“\\w”上匹配,为什么还要添加“\\b”?当然!但是关于捕获呢?他的问题不清楚,这就是为什么你的答案中有这两个案例。但是在
if
分支中,他将拥有
str.substring(2)
。我会更新答案
if(str.matches('^US.*$')){ 
    // fail 
    // or  
    // str.substring(2)
} else { 
   //pass 
}