java - 与输入匹配时包含 anchor ( $ ) 的正则表达式在以下程序中显示意外结果,为什么?

标签 java regex

/*
    patString: it$
    input: this is it
    the output at 2 to the match operation at 1 is false, why?
*/

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.Console;

public class Test {
    public static void main(String args[])  {
        Console con = System.console();
        String patString, input;
        patternString  = con.readLine("Enter pattern: "); //pattern 
        input =  con.readLine("input: "); // input string to match against pattern
        Pattern pattern = Pattern.compile(patString);
        Matcher matcher = pattern.matcher(input);
        boolean testMatch = matcher.matches(); //1
        System.out.println("match found: " + testMatch); //2
    }
}

最佳答案

Matcher.matches() 方法尝试将整个字符串与给定模式匹配,或者换句话说,它有一个隐式的 ^...$ 包围模式。

你想要find()方法

来自 Matcher 的 javadoc :

  • > matcher() : 尝试将整个输入序列与模式匹配
  • > find() : 尝试找到与模式匹配的输入序列的下一个子序列。

关于java - 与输入匹配时包含 anchor ( $ ) 的正则表达式在以下程序中显示意外结果,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4284106/

相关文章:

java - 扩展类在 Eclipse 中可以完美编译,但不能在 cmd 中编译

用于从输入字符串生成正则表达式的 Java 库

javascript - 如何创建一个正则表达式来选择不以 '#' 或 '.' 开头的单词

java - 强制不同的 Spring Repositories 使用相同的事务

java - 如何在 MacOS Sierra 上安装 JCE for JRE 8?

javascript - 寻找具有素面的多边形区域

javascript - JS从字符串中删除带有 "new RegExp()"的非字母字符

regex - powershell-替换正则表达式

sql - 在 Snowflake 中使用正则表达式过滤与句子/单词的完全匹配

java - 蛋白质序列显示