Java模式匹配器行为
假设我编译一个正则表达式模式:Java模式匹配器行为,java,regex,Java,Regex,假设我编译一个正则表达式模式: String myString = "manifest"; p = Pattern.compile( myPattern, Pattern.CASE_INSENSITIVE ); Matcher m = p.matcher( myString ); if ( m.matches() ){ ..... } 例如,当我将myPattern指定为ni时,myString不匹配。但当我将myPattern指定为*ni.*时,它就会匹配 在代码的后面部
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
作为要替换的两个字符,那么它将只替换ni
。如果指定*ni.*
,则整个字符串将替换为新模式。现在我的问题是它不匹配
解决这个问题的办法是什么?
感谢尝试根据模式匹配整个输入(如文档中所述),当然
manifest
不是ni
的精确匹配,而是*ni.
的精确匹配。但如果使用,例如,它将在输入中的某个位置搜索模式。还有一个匹配器,它尝试在输入中的“当前”位置匹配模式。这完全取决于您使用的匹配器
方法:
- matches():当且仅当整个区域序列
String input = "manifest";
Matcher m1 = Pattern.compile("ni").matcher(input);
System.out.println(m1.matches()); // false
System.out.println(m1.find()); // true
Matcher m2 = Pattern.compile(".*ni.*").matcher(input);
System.out.println(m2.matches()); // true
System.out.println(m2.find()); // false
此外,find()允许您迭代匹配项:
while (m2.find()) {
String groupX = m2.group(x);
}
直接使用。替换?您如何使用
m
?您好,谢谢,我使用了匹配项。所以我应该使用查找…我会尝试一下。谢谢