Pattern p = Pattern.compile("(?<=<(\\w+)>)");

Matcher m = p.matcher(textStr);

怎么提示我(?<=<(\\w+)>[color=#FF0000][/color])

红色的部分出错

Exception in thread "main" java.util.regex.PatternSyntaxException: Look-behind group does not have an obvious maximum length near index 10

(?<=<(\w+)>)

解决方法:

lookbehind 其中所指定的字符必须是指定数量的,不能用 * + 之类的,但可以用 {0, 100} 这种确定型的。

lookahead 没有这种限制。

 

特殊构造(非捕获) 
(?:X) X,作为非捕获组 
(?idmsux-idmsux) Nothing,但是将匹配标志由 on 转为 off 
(?idmsux-idmsux:X) X,作为带有给定标志 on - off 的非捕获组 
(?=X) X,通过零宽度的正 lookahead 
(?!X) X,通过零宽度的负 lookahead 
(?<=X) X,通过零宽度的正 lookbehind 
(?<!X) X,通过零宽度的负 lookbehind 
(?>X) X,作为独立的非捕获组