我试图弄清楚如何从String中获得2个匹配项 Bla bla bla [https://google.com|Google] bla bla bla [https://youtube.com|Youtube]
我想要2场比赛:[https://google.com|Google], [https://youtube.com|Youtube]
。我的正则表达式看起来像这样:\[.*\|.*\]
和它我只能得到一个匹配项:[https://google.com|Google] bla bla bla [https://youtube.com|Youtube]
所以这是错误的答案。如何获得正确答案?
PS Google和youtube-硬编码示例。我获得了包含1000多个条目的数据数组,因此我需要一个通用的解决方案。
您可以使用
\[([^\]\[|]*)\|([^\]\[]*)]
请参阅regex演示。细节:
\[
-一个[
字符([^\]\[|]*)
-第1组:任何零或比其它更多字符[
,]
和|
\|
-一个|
字符([^\]\[]*)
-第2组:除[
和以外的任何零个或多个字符]
]
-一个]
字符在Java中,使用
String regex = "\\[([^\\]\\[|]*)\\|([^\\]\\[]*)]";
参见Java演示:
String s = "Bla bla bla [https://google.com|Google] bla bla bla [https://youtube.com|Youtube]";
String regex = "\\[([^\\]\\[|]*)\\|([^\\]\\[]*)]";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(s);
while (matcher.find()){
System.out.println("Match: " + matcher.group(0));
System.out.println("Group 1: " + matcher.group(1));
System.out.println("Group 2: " + matcher.group(2));
}
输出:
Match: [https://google.com|Google]
Group 1: https://google.com
Group 2: Google
Match: [https://youtube.com|Youtube]
Group 1: https://youtube.com
Group 2: Youtube
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句