gpt4 book ai didi

java - 正则表达式挂起 - Java 匹配器

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:08 28 4
gpt4 key购买 nike

字符串:

Aqua, Sodium Laureth Sulfate, Sodium Lauryl Sulfate, Dimethicone, Cocamide MEA, Zinc Carbonate, Glycol Distearate, Sodium Chloride, Zinc Pyrithione, Sodium Xylenesulfonate, Cetyl Alcohol, Parfum, Guar Hydroxypropyltrimonium Chloride, Magnesium Sulfate, Sodium Benzoate, Ammonium Laureth Sulfate, Magnesium Carbonate Hydroxide, Linalool, Butylphenyl Methylpropional, Limonene, Hydroxyisohexyl 3-Cyclohexene Carboxaldehyde, Benzyl Alcohol, Hexyl Cinnamal, Citronellol, Tocopheryl Acetate, Paraffinum Liquidum, Sodium Polynaphthalenesulfonate, CI 19140, DMDM Hydantoin, CI 15510, Methylchloroisothiazolinone, Disodium EDTA, Tetrasodium EDTA, Methylisothiazolinone.

当前正则表达式:

System.out.println(string.matches("([\\W]*\\b[A-Z\\d]\\w+\\b[\\W]*)+"));

Java 应用程序挂起。我在正则表达式中找不到错误。通过谷歌搜索,我发现这可以称为“灾难性回溯”!?如果字符串仅包含大写单词,则正则表达式应与字符串匹配例如,如果 1 个单词是小写的,则不应与其匹配。

最佳答案

我建议您按单词拆分输入字符串,然后进行模式匹配,更简单:如果您只想测试每个单词的第一个字母是否大写,则不要进行模式匹配,例如:

for (String s : string.split("\\W")) {
if (s.charAt(0) < 'A' || s.charAt(0) > 'Z') {
return false;
}
}

对我来说听起来快得多(如果需要,您甚至可以得到失败的单词)。

关于java - 正则表达式挂起 - Java 匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12194456/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com