gpt4 book ai didi

java - GWT 正则表达式不工作

转载 作者:行者123 更新时间:2023-11-30 03:09:19 26 4
gpt4 key购买 nike

String statement1 = "<'aaa'> Hello <'bbb'> Demo <'ccc'>";

RegExp regExp = RegExp.compile("\\<(.*?)\\>");
MatchResult matcher = regExp.exec(statement1);
boolean matchFound = matcher != null;

while(matchFound){
System.out.println("First: "+matcher.getGroup(0));
System.out.println("Second: "+matcher.getGroup(1));
System.out.println("Third: "+matcher.getGroup(2));
}

o/p:
First: <'aaa'>
Second: aaa
Third: undefined

此代码不会返回我预期的结果,而它是使用 util regex 实现的。

Expected Result Was:<aaa> <bbb> <ccc> 

最佳答案

要点是字符串中有 3 个预期匹配项,但声明的正则表达式没有 global标志“g”。你不必逃避<>因为它们不是特殊字符。

因此,使用

RegExp regExp = RegExp.compile("<(.*?)>", "g");
^

或者 - 如果没有 <第一个符号 <下一个> :

RegExp regExp = RegExp.compile("<([^<]*)>", "g");

请注意[^<]*匹配 0 个或多个除 < 之外的字符这比惰性点匹配更有效。

请注意matcher.getGroup(n)访问捕获的子匹配,这些子匹配是与括号内的子模式匹配的子字符串。由于正则表达式中只有一组括号,因此有 2 组:1)第 0 组是整个匹配项,2)第 1 组全部位于 < 之间。和> .

现在,如果您希望摆脱 '之后<和之前> ,我建议预先删除它们,只需 replace方法。

要获取所有匹配项,请使用:

while (matcher != null) {
...
matcher = regExp.exec(statement1);
}

关于java - GWT 正则表达式不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33956093/

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