「java正则效率」java正则表达式重要吗

博主:adminadmin 2022-11-24 16:34:07 53

本篇文章给大家谈谈java正则效率,以及java正则表达式重要吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java中的正则是什么意思?求解

正则是,一种字符串处理表达式,可进行文本的查找,替换,判断某个文本是否存在,子文本串的提取等操作,正则表达式的书写必须满足一定规则。

此处我指出一点,初学者,容易犯错的地方:

*?与*的区别,专业术语叫贪婪匹配与非贪婪匹配,通俗解释:如果我们要匹配一个html标记:

diva href="" target="123"知道/aa href="" target="123"腾讯/a/div

a.*?.*?/a能匹配上每一个a/a标签对,而:a.*?.*/a匹配上的是a href="" target="123"知道/aa href="" target="123"腾讯/a

总结所谓贪婪中间有多长不管,一直给匹配到最后一个适合的文本串。非贪婪只匹配到第一个找到的模式结束。

除了贪婪与非贪婪网上很难找到资料,术语很难理解。其他的很容易学会。

正则表达式是处理大文本效率极佳的一种工具。它的实现不单单是java,有javascript,unix文本处理命令(代表C语言有实现库),swift等流行语言,windows下的文本编辑器(如editplus,notepad++)。正则表达式,本段列举出来的语言工具基本上能完全支持。

总之正则表达式是一种很有用的工具,希望你能学好。

用java正则表达式提取java程序中的注释

正则的效率非常低,有很多不用正则的好方法:

一,示例 某java程序

比如说一个Test2.java,将其保存在C盘根目录下,代码内容如下

/**

* @author xxx

*

*/

public class Test2 {

/* main method */

public static void main(String[] args) {

//a

int a =5;

//b

int b =5;

//a+b

System.out.println(a+b);

}

}

二,提取注释程序,将所有注释放到一个List里面,最后打印输出:

import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.List;

public class Test {

private static final String javaFilePath = "C:/Test2.java";

public static void main(String[] args) throws IOException {

ListString comments = new ArrayListString();

BufferedReader bfr = new BufferedReader(new InputStreamReader(new FileInputStream(javaFilePath)));

String line=null;

while((line=bfr.readLine())!=null){

line = line.trim();

if(line.startsWith("//")){

comments.add(line);

}

else if(line.startsWith("/*")line.endsWith("*/")){

comments.add(line);

}else if(line.startsWith("/*")!line.endsWith("*/")){

StringBuffer multilineComment = new StringBuffer(line);

while((line=bfr.readLine())!=null){

line = line.trim();

multilineComment.append("\n").append(line);

if(line.endsWith("*/")){

comments.add(multilineComment.toString());

break;

}

}

}

}

bfr.close();

for(int i=0;icomments.size();i++){

System.out.println("第"+(i+1)+"处注释: ");

System.out.println(comments.get(i));

}

}

}

三,输出结果:

第1处注释:

/**

* @author xxx

*

*/

第2处注释:

/* main method */

第3处注释:

//a

第4处注释:

//b

第5处注释:

//a+b

java正则表达式中,matches和find的效率问题

你可以看下源码,匹配原理是一样的,没什么大区别。效率应该是一样的。匹配原则代码块如下。

 this.hitEnd = false;

        this.requireEnd = false;

        from        = from  0 ? 0 : from;

        this.first  = from;

        this.oldLast = oldLast  0 ? from : oldLast;

        for (int i = 0; i  groups.length; i++)

            groups[i] = -1;

        acceptMode = anchor;

        boolean result = parentPattern.matchRoot.match(this, from, text);

        if (!result)

            this.first = -1;

        this.oldLast = this.last;

        return result;

关于java正则效率和java正则表达式重要吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-24,除非注明,否则均为首码项目网原创文章,转载请注明出处。