【发布时间】:2012-08-06 04:57:50
【问题描述】:
在 Java 中,当我们尝试使用正则表达式进行模式匹配时。例如获取输入字符串并使用正则表达式来确定它是否为数字。如果不是,则抛出异常。 在这种情况下,我理解,使用正则表达式使代码比我们获取字符串的每个字符,检查它是否是一个数字,如果不是抛出异常更简洁。
但我的假设是,正则表达式也会使过程更有效率。这是真的?我找不到关于这一点的任何证据。正则表达式如何在幕后进行匹配?它不是也遍历字符串并逐个检查每个字符吗?
【问题讨论】:
-
简单的查找方法:运行两个选项并为每个选项计时。该过程受 CPU 限制,因此持续时间会告诉您哪个更有效。请注意,您可以通过重新使用已编译的模式来提高正则表达式的效率,而不是使用
string.matches(),后者会在每次调用时重新编译正则表达式。
标签: java regex performance