5

文字列に連続した3桁が含まれているかどうかを、Javaの正規表現でチェックしたいと思います。しかし、問題は私の文字列にユニコード文字が含まれている可能性があることです。文字列に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 に答える