Java Regexp检查字符串中的连续3位数字

Java Regexp检查字符串中的连续3位数字,java,regex,Java,Regex,我想要一个java正则表达式来检查字符串是否包含连续的3位数字。但问题是我的字符串可能包含unicode字符。如果字符串包含unicode字符,则应跳过unicode字符(跳过&AND#之后的4’),并进行检查。例如 Neeraj : false Neeraj123 : true &#1234Neeraj : false &#1234Neeraj123 : true 123N&#123D : true Neeraj&#1234 : false Neeraj&

我想要一个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

您需要使用负片:


对于
String.matches(String regex)
,所有示例都返回false。@BheshGurung:是的<代码>匹配()是用于此操作的错误工具。它希望正则表达式匹配整个字符串。Neeraj询问如何在字符串中搜索不属于Unicode转义序列的三位数字。这就是
find()
方法的作用。使用合适的工具来做这项工作……我没有把问题读清楚。很糟糕。在这种情况下,这是完美的+1.我想知道为什么OP还没有接受答案。:)@贝什古隆:我必须承认我自己也被这个问题弄糊涂了。标题是“查找”,内容是“检查”,所以我想你的观点是正确的。但最终,使用如此混乱的方法名称是Java的错。:)@尼拉吉:别这样。使用
返回regexMatcher.find()。不需要
if
@pst:我不同意这是那么琐碎。您需要了解周围环境,才能提出解决方案的概念。他确实提供了一个全面的测试套件,这确实显示出了一些努力。@pst:好的,我很乐意推荐一个不需要四处查看(并且仍然可读)的正则表达式解决方案。这是解决难题的一种方法。尽管看起来很简单:)
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