java正则表达式有时无法匹配

标签 java regex string

我试图了解java中正则表达式匹配的工作原理,并对以下代码片段有疑问

当我运行它时:http://ideone.com/2vIK77

/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {


         String a = "Basic";
         String b = "Bas*";

         boolean matches = Pattern.matches(b, a); 
         System.out.println("1) "+matches);


        String text2    =
        "This is the text to be searched " +
        "for occurrences of the pattern.";

        String pattern2 = ".*is.*";

        boolean matches2 = Pattern.matches(pattern2, text2);

        System.out.println("matches2 = " + matches2);


    }
}

它说 第一个为 false,第二个为 true。

1) false
matches2 = true

我无法理解为什么我在第一种情况下会出错..我希望它是真的。 有人可以给我建议吗

最佳答案

第一个模式:"Bas*",将匹配以 "Ba" 开头且由零个或多个 组成的任何字符串> 字符("Ba""Bas""Bass" 等)。这无法匹配“Basic”,因为“Basic”不符合该模式。

第二个模式,“.*is.*”,使用通配符字符.,这意味着“匹配任何字符” 。它将匹配任何位置包含字符串 "is" 且前面和/或后面有零个或多个其他字符的文本。

docs for Pattern详细描述了模式中可能出现的所有特殊元素。

关于java正则表达式有时无法匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18864075/

相关文章:

java - 在 Java 中处理 TAB 字符

java - 在具有多种组合的 xml 文件内使用 PointCut 表达式

java - 在 Apache Spark 中解析 XML 数据

java - 映射多对一外键 Java EE

MySQL PREG_CAPTURE 正则表达式

regex - 删除文本文件中的所有超链接,linux脚本

r - 有没有办法过滤文本字符串以获取与模式不同的值?

c++ - 是否可以为 std::string 和 std::wstring 编写一个函数?

java - 我想分割字符串

c# - 正则表达式是否允许您解析字符串?如果是这样,如何?