正则表达式的优点是什么?

Pra*_*ran -1 java regex string

代码的正则表达式

    String inputOne = "cat cat cat cattie cat";
    String findStr = "cat";
    Pattern p = Pattern.compile("cat");
    Matcher m = p.matcher(inputOne);
    int countOne = 0;
    while (m.find()) {
        countOne++;
    }
    System.out.println("Match number " + countOne);
Run Code Online (Sandbox Code Playgroud)

代码的字符串比较

   String inpuTwo = "cat cat cat cattie cat";
   int lastIndex = 0;
   int count = 0;
   while (lastIndex != -1) {
       lastIndex = inpuTwo.indexOf("cat", lastIndex);
       if (lastIndex != -1) {
            count++;
            lastIndex += findStr.length();
       }
   }
   System.out.println("Match number " + count);
Run Code Online (Sandbox Code Playgroud)

在两者中都会在输入字符串"cat cat cat cattie cat"中找到子串"cat"的出现.

我的问题是它们之间的区别是什么?

正则表达式优于字符串比较的优势是什么.

哪一个我应该用于申请.正则表达式或字符串比较?

谢谢.

das*_*ght 13

两者完全不同,所以答案很大程度上取决于手头的任务.

如果使用没有元字符的正则表达式,请使用基于字符串的比较:它们更容易理解,并且不会引入不属于它的复杂性(这里是指向深入探讨这一点的文章的链接).

正则表达式的强大功能始于元字符的使用.如果需要定义要捕获的字符串而不是逐个枚举它们,则应使用正则表达式.

  • @Prabhakaran很可能,不:正则表达式引擎通常构建识别输入的最终状态自动机.在Java中,自动机的构建发生在对`Pattern.compile`的调用中. (3认同)