【发布时间】:2012-07-16 09:37:53
【问题描述】:
当我使用下面的字符串作为正则表达式的输入时,Java 以 100% 的 CPU 使用率挂起。
使用的正则表达式:
这是我的应用程序中用于描述字段的正则表达式。
^([A-Za-z0-9\\-\\_\\.\\&\\,]+[\\s]*)+
用于测试的字符串:
Provider_One 的 SaaS 服务 VLAN
Didier SPT 的第二次尝试,因为他给我的第一次是错误的 :-(
当我将相同的字符串拆分为不同的组合时,它可以正常工作。像“Provider_One 的 SaaS 服务 VLAN”、“他给我的第一个是错误的 :-(”等。Java 仅针对上面给定的字符串挂起。
我还尝试如下优化正则表达式。
^([\\w\\-\\.\\&\\,]+[\\s]*)+
即使这样也不行。
【问题讨论】:
-
你想从那个字符串中匹配或提取什么?您的正则表达式似乎基本上可以匹配任何句子。
-
@user1531484 - 能否请您发布整个代码,即模式、匹配器和要获取的代码。
-
从字符串中删除笑脸和数字时是否有效?
-
能否请您发布用于此的 java 代码?
-
既然有人解释了为什么会发生这种情况,请问您是否尝试过流处理方法?