5

我想要一个 java 中的正则表达式来检查一个字符串是否包含连续的 3 位数字。但问题是我的字符串可能包含 unicode 字符。如果字符串包含 unicode 字符,它应该跳过 unicode 字符(在 & AND # 之后跳过 4 个 '.')并且应该进行检查。一些例子是

Neeraj : false
Neeraj123 : true
&#1234Neeraj : false
&#1234Neeraj123 : true
123N&#123D : true
Neeraj&#1234 : false
Neeraj&#12DB123 : true
&#1234 : false
4

1 回答 1

9

您需要使用否定的后向断言

Pattern regex = Pattern.compile(
    "(?<!             # Make sure there is no...           \n" +
    " &\\#            # &#, followed by                    \n" +
    " [0-9A-F]{0,3}   # zero to three hex digits           \n" +
    ")                # right before the current position. \n" +
    "\\d{3}           # Only then match three digits.", 
    Pattern.COMMENTS);

您可以按如下方式使用它:

Matcher regexMatcher = regex.matcher(subjectString);
return regexMatcher.find();  // returns True if regex matches, else False
于 2012-11-03T07:29:36.357 回答