假设我编译了一个正则表达式模式:
String myString = "manifest";
p = Pattern.compile( myPattern, Pattern.CASE_INSENSITIVE );
Matcher m = p.matcher( myString );
if ( m.matches() ){
.....
}
例如,当我将 myPattern
指定为 ni
时,myString
不会匹配。但是当我将 myPattern
指定为 .*ni.*
时,它就会匹配。
在代码的后面部分,我将希望用新模式替换 myPattern
中定义的内容。例如,如果我指定 ni
作为要替换的 2 个字符,那么它只会替换 ni
。如果我指定 .*ni.*
,那么整个字符串将被替换为新模式。现在我的问题是它不匹配。
有什么办法可以解决这个问题? 谢谢
最佳答案
matches
尝试将整个输入与模式进行匹配(正如文档中所述),当然manifest
与ni
不完全匹配> 但与 .*ni.*
完全匹配。但如果你使用find
例如,它会在输入中的某处搜索模式。还有lookingAt
,它尝试匹配输入中“当前”位置的模式。
关于Java 模式匹配器行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26926484/