regex Java字符串解析,哪个更快?正则表达式还是字符串方法?

iswrvxsc  于 2022-11-18  发布在  Java
关注(0)|答案(3)|浏览(145)

我正面临一个两难的境地。我正在解析一个字符串,

s.matches(regex)

或者我可以

s.startsWith(..) && s.endsWith(..)

正如你已经意识到的,这不是一个复杂的正则表达式,两种情况都可以。想法是,字符串可能很长(数百个字符),所以我希望最大限度地提高效率。什么工作如何和更好地适合这个问题?

ru9i0ody

ru9i0ody1#

这里有一个相当粗糙的 * 基准测试 * 给予你一个想法。根据你的用例调整它,给你更相关的结果。

TL;DR的名称

  • startsWith()endsWith()的速度要快得多

详细结果

1000000次运行后的结果:
第一个

xfb7svmp

xfb7svmp2#

请注意,如果结尾预期的字串是起始字串的尾码,两种方法可能会报告不同的结果:

^start.*art$

将不匹配

"start"

同时

"start".startsWith("start") && "start".endsWith("art")

都是真的。

x9ybnkn6

x9ybnkn63#

事实上,对于小字符串来说,差异也很明显。使用模式的正则表达式的编译版本确实做出了一些增强,但毫无疑问,当匹配很容易时,这是最糟糕的主意。
谢谢大家。

相关问题