Java 模式匹配器行为

标签 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.* 时,它就会匹配。

在代码的后面部分,我将希望用新模式替换 myPattern 中定义的内容。例如,如果我指定 ni 作为要替换的 2 个字符,那么它只会替换 ni。如果我指定 .*ni.* ,那么整个字符串将被替换为新模式。现在我的问题是它不匹配。

有什么办法可以解决这个问题? 谢谢

最佳答案

matches尝试将整个输入与模式进行匹配(正如文档中所述),当然manifestni不完全匹配> 但与 .*ni.* 完全匹配。但如果你使用find例如,它会在输入中的某处搜索模式。还有lookingAt ,它尝试匹配输入中“当前”位置的模式。

关于Java 模式匹配器行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26926484/

相关文章:

java - 如何在Struts2中使用Displaytags传递Id值来执行编辑操作?

java - 在android中滚动 ListView 时如何不刷新

java - 数组中唯一的一组字符

javascript - 为什么名称验证无效?

javascript - 用于计算以下字符串的正则表达式

java - setEnable(false) 不会阻止 JMenuItem 使用 WindowsLookAndFeel 突出显示

java - Jasper 报告导致 SELECT 语句出现 CURSOR 问题

javascript - 如何通过 Javascript 自动添加双引号将字符串括起来?

PHP重命名文件,以特殊名称开头?

jquery - if(this.id.match(/^None_+\d+_+\d+$/)) 中的错误是什么