gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:19:27 24 4
gpt4 key购买 nike

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

我有一个需要匹配的字符串。该字符串始终以 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 子句?

最佳答案

使用 negative look-ahead :

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

(?!XX) 的意思是“如果我能在当前位置匹配到XX就不匹配”,但它实际上并没有改变当前位置(所以它测试的两个字符仍然可以被 [A-Z]{2} 匹配。)

关于java - 排除正则表达式中的匹配字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1458862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com