java.util.regex提供了的对正则表达式的支持,但是感觉效率不是很高..不排除是我表达式写的不好..想问下相比.net或者c++,java自带的这个类库的效率如何?
我看有些第三方的正则表达式的java类库,不知道有没有效率更高点的...我现在用java自带的这个,解析的时候cpu基本占满,而且消耗时间也比较长.
谁能给点改进的建议?谢谢
我看有些第三方的正则表达式的java类库,不知道有没有效率更高点的...我现在用java自带的这个,解析的时候cpu基本占满,而且消耗时间也比较长.
谁能给点改进的建议?谢谢
不過沒覺得regex效率低呀?
我想問下你的el一般長度是多少?超過20個單位的長度么?
这些都是都是考虑开源问题的。
你去apache看看...
java的正则速度还算很快吧,因为有过自己写的原以为很快了,结果用正则发现要快不少
。
解析的时候cpu基本占满......这个不是问题吧???CPU多少是操作系统调度问题吧,再说了占满才能速度快啊。
另外你说的时间长,最好也说一下数据量多少,你的正则啥样啊,要不怎么判断。
需要从正则表达式本身进行优化,尽量减少回溯和无穷匹配的次数。
适时地使用 + 侵占量词,比如 (?:june|july) 尽量写成 ju(?:ne|ly),\d{3} 可以写
成 \d\d\d 等等之类的,具体的优化可以看看 Mastering Regular Expressions 一书。至于其他的正则库基本上都是采用 NFA 引擎的,与 Java 中的性能区别是不大的,而且与
其他语言的性能区别也不是很大的。据 Mastering Regular Expressions 上所说 Tcl 是采用 NFA 和 DFA 混合引擎的,
它是经过精心设计的,根据不同的表达式选择不同的引擎,这无疑是最优秀的。
我的正则表达式用零宽段言用得比较多,大概形式是这类的:(?<=类((\\s*)|[ ]*)(型|别)(:|:|\\s|[ ])).*另外问下oro里用不了"?<=exp"么,但是"?=exp"可以用啊.