gpt4 book ai didi

java - 如何正确使用java Pattern对象来匹配字符串模式

转载 作者:行者123 更新时间:2023-12-01 18:29:49 26 4
gpt4 key购买 nike

我编写了一个代码,它执行多个字符串操作,包括检查给定字符串是否与某个正则表达式匹配。它在 70,000 个输入下运行得很好,但当我迭代运行它进行五重交叉验证时,它开始出现内存不足错误。可能情况是我必须分配更多内存,但我有一种感觉,我可能编写了低效的代码,所以想仔细检查我是否没有犯任何明显的错误。

     static Pattern numberPattern = Pattern.compile("^[a-zA-Z]*([0-9]+).*");
public static boolean someMethod(String line) {
String[] tokens = line.split(" ");
for(int i=0; i<tokens.length; i++) {
tokens[i] = tokens[i].replace(",", "");
tokens[i] = tokens[i].replace(";", "");
if(numberPattern.matcher(tokens[i]).find()) return true;
}
return false;
}

我还有很多行,如下所示:

        token.matches("[a-z]+[A-Z][a-z]+"); 

哪种方式内存效率更高?他们看起来足够高效吗?任何建议表示赞赏!

编辑:

抱歉,我有一个错误的代码,我打算在发布这个问题之前修改它,但我在最后一刻忘记了。但问题是我有很多类似的操作,除了示例代码没有意义之外,我想知道正则表达式比较部分是否有效。

感谢大家的意见,我会按照大家的建议仔细查看并修改代码!

最佳答案

好吧,首先,尝试再看一下你的代码......它总是会返回一个“true”值!您没有读取“匹配”变量,只是输入值......

其次,字符串是不可变的,因此,每次拆分时,您都会创建另一个实例...为什么不尝试创建一个模式,使您想要的匹配忽略逗号和分号?我不确定,但我认为这会占用你更少的内存......

关于java - 如何正确使用java Pattern对象来匹配字符串模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24750240/

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