繁体   English   中英

排除正则表达式中的匹配字符

[英]excluding matching characters in regular expression

我遇到了正则表达式问题。

我有一个字符串需要匹配。 字符串始终以2个字母开头,然后是6位数字,例如

  • EF123456
  • AB123456

但是,我需要忽略字母的一种组合。 例如:

  • XX123456

因此,我想编写一个正则表达式以仅匹配字符串的正常格式。

目前,我必须执行以下操作:

Pattern pattern = Pattern.compile("[A-Z]{2}[0-9]{6}");
...

if(pattern.matcher(n).matches() && !n.toUpperCase().startsWith("XX")) {
    // do match stuff
}

如何重写我的正则表达式,以便摆脱上面代码中的startsWith子句?

使用否定的前瞻

"(?!XX)[A-Z]{2}[0-9]{6}"

(?!XX)意思是“如果我可以在当前位置匹配XX ,则不匹配”,但实际上并不会更改当前位置(因此,它测试的两个字符仍可以由[AZ]{2}匹配。 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM