gpt4 book ai didi

java - 使用编译和正则表达式获取字符串中的所有匹配项

转载 作者:行者123 更新时间:2023-11-30 02:35:26 25 4
gpt4 key购买 nike

我正在尝试获取以 _ 开头的所有匹配项并以 = 结尾来自看起来像的 URL

?_field1=param1,param2,paramX&_field2=param1,param2,paramX

在这种情况下,我正在寻找 _fieldX= 的任何实例

我用来获取它的方法看起来像

public static List<String> getAllMatches(String url, String regex) {
List<String> matches = new ArrayList<String>();
Matcher m = Pattern.compile("(?=(" + regex + "))").matcher(url);
while(m.find()) {
matches.add(m.group(1));
}
return matches;
}

称为

List<String> fieldsList = getAllMatches(url, "_.=");

但不知何故没有找到任何我所期望的东西。

有什么我错过的建议吗?

最佳答案

(?=(_.=)) 这样的正则表达式匹配所有以 _ 开头的重叠匹配,然后有任何 1 个字符(除了一行)中断字符),然后 =

您提供的字符串上下文中不需要重叠匹配。

您可以只使用惰性点匹配模式,_(.*?)= 。或者,您可以使用基于否定字符类的正则表达式:_([^=]+)= (它将捕获除 = 符号之外的任何一个或多个字符到第 1 组中)。

关于java - 使用编译和正则表达式获取字符串中的所有匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43240091/

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