JAVA正则表达式:如何匹配环顾

时间:2016-01-31 03:01:15

标签: java regex regex-lookarounds

(修改)

我想知道String的特定子字符串是否与特定的正则表达式匹配。类似的东西:

boolean matchSubString(Pattern p, String string, int start, int end) {
   String sub = string.substring(start, end);
   return p.matcher(string).matches();
}

但是,当我环顾四周时,这不起作用。假设我的正则表达式是

(?<![A-Z])[A-Z ]+(?![A-Z])

我想

matchSubString(p, "XABC",1 , 4)

返回“false”,但它返回“true”,当然,因为matches()不知道后面或后面的字符。

我知道没有办法使用标准的java.util.regex对象来实现它,但是JAVA还有其他任何可以执行它的正则表达式库吗?

1 个答案:

答案 0 :(得分:-1)

匹配

  • 两组三个大写字符
  • 应该用单个空格分隔
  • 并且不应该在
  • 之前或之后立即使用大写字符

这应该有效:

(?<![A-Z])[A-Z]{3} [A-Z]{3}(?![A-Z])

这个正则表达式

  • 匹配由空格分隔的两组三个大写字符:[A-Z]{3} [A-Z]{3}
  • 确保比赛前后没有大写字母(使用负向前瞻/后视:(?<![A-Z])(?![A-Z])

Regex 101 Sample