加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么这些正则表达式在Java中执行缓慢?

发布时间:2020-12-13 21:53:38 所属栏目:百科 来源:网络整理
导读:我正在尝试使用正则表达式来确定用户在文本框中输入输入时应用的格式. 正则表达式如下: (s?[" + alphabet + "]{9,9})+ 确定输入是否是给定字母表中长度为9的一个或多个字符串,可能由空格分隔. ([ws]+n[" + alphabet + "s]+)+ 检查输入是否在FASTA
我正在尝试使用正则表达式来确定用户在文本框中输入输入时应用的格式.
正则表达式如下:
(s?[" + alphabet + "]{9,9})+

确定输入是否是给定字母表中长度为9的一个或多个字符串,可能由空格分隔.

(>[ws]+n[" + alphabet + "s]+)+

检查输入是否在FASTA format中

与inputString.matches(regexString)匹配时,正则表达式运行速度非常慢.为什么是这样?

我想这可能是因为Java存储了所有可能的匹配(此时我不需要),但是在每个括号中添加?:会破坏正则表达式.该怎么做?

谢谢,

马丁

编辑1:我无法重现此问题 – 它只发生在一台计算机上.这可能表明该特定VM设置有问题.
我们需要更强大的东西,因此我们将以不同的方式实现这一点.我选择Joel的答案是正确的,因为我相信Pattern中的一些特殊情况可能是原因.

如果您有许多不同的正则表达式模式与相同的输入匹配以尝试对输入进行分类,那么使用像 JFlex这样的词法分析器生成器可能会更好.

可以在here中找到通常用于编译器构造的其他基于Java的词法分析器和解析工具.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读