如何解决你如何在java中不能包含数字的单词上使用正则表达式?
基本上,如果字符串包含“word”并且后跟一个数字,我想使用正则表达式返回false,即如果“theword1”、“theword2”、“theword5”等返回false
但是,如果它只是没有数字的“theword”或像“apple5”这样的完全不同的字符串,我仍然希望它返回true - 单词和数字必须在一起才能返回false。我知道它可以做到,但我真的被卡住了。
这是我迄今为止尝试过的(不起作用):
str.matches(".*([word][^1-9])*.*")
我的逻辑是 0 个或多个字符 (.*)
单词不是在出现 0 次或多次 (([word][^1-9])*)
的数字旁边,然后是 0 个或多个字符。
解决方法
您尝试的模式 [word][^1-9]
包含 2 个字符类。它将首先匹配单个字符,其中一个 w
o
r
d
后跟一个非数字 1-9 的单个字符
您可以通过断言字符串中的非单词后跟数字来排除匹配。
^(?!.*word\d).+
,
当后面没有数字时匹配“word”,作为一个负面的前瞻:
boolean hasUnnumberedWord(String str,String word) {
return str.matches(".*" + word + "(?!\\d).*");
}
如果“word”可能包含在正则表达式中具有特殊含义的字符,请使用 Pattern.quote(word)
或 word
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。