gpt4 book ai didi

Java 正则表达式 : how to capture multiple matches in the same line

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:32 26 4
gpt4 key购买 nike

我正在尝试匹配 Java 中的正则表达式模式,我有两个问题:

  1. 在我正在寻找的模式中,有一个已知的开头,然后是一个未知的字符串,我想在第一次出现 & 之前找到它。
  2. 这些模式在该行中多次出现,我想分别获取每一次出现的情况。

例如我有这个输入行:

1234567 100,110,116,129,139,140,144,146 http://www.gold.com/shc/s/c_10153_12605_Computers+%26+Electronics_Televisions?filter=Screen+Refresh+Rate%7C120HZ%5EScreen+Size%7C37+in.+to+42+in.&sName=View+All&viewItems=25&subCatView=true   ISx20070515x00001a          http://www.gold.com/shc/s/c_10153_12605_Computers+%26+Electronics_Televisions?filter=Screen+Refresh+Rate%7C120HZ&sName=View+All&subCatView=true 0   2819357575609397706

我对这些字符串很感兴趣:

Screen+Refresh+Rate%7C120HZ%5EScreen+Size%7C37+in.+to+42+in.

Screen+Refresh+Rate%7C120HZ

最佳答案

假设已知的开头是 filter=**,则正则表达式模式 (?:filter=\\*\\*)(.*?)(?:&) 应该可以满足您的需求。使用 Matcher.find() 获取给定字符串中出现的所有模式。使用您提供的测试字符串,如下:

final Pattern p = Pattern.compile("(?:filter=\\*\\*)(.*?)(?:&)");
final Matcher m = p.matcher(testString);
int cnt = 0;
while (m.find()) {
System.out.println(++cnt + ": G1: " + m.group(1));
}

将输出:

1: G1: Screen+Refresh+Rate%7C120HZ%5EScreen+Size%7C37+in.+to+42+in.
2: G1: Screen+Refresh+Rate%7C120HZ**

关于Java 正则表达式 : how to capture multiple matches in the same line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7470394/

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