如果您的输入字符串包含换行符号,.*那么还不够.matches(),需要完整的字符串匹配.
因此,您需要一个DOTALL修饰符:
Pattern.matches("(?s).*this is a substring.*", e.toString())
^^^^
Run Code Online (Sandbox Code Playgroud)
请参阅Java正则表达式参考:
在dotall模式下,表达式
.匹配任何字符,包括行终止符.默认情况下,此表达式与行终止符不匹配.也可以通过嵌入的标志表达式
(?s)启用Dotall模式.(这s是"单行"模式的助记符,这是在Perl中调用的.)
注意:如果您需要检查较长字符串中是否存在文字子字符串,则.contains()方法应该更快.或者,如果您需要不区分大小写contains,也可以检查StringUtils.containsIgnoreCase.