gpt4 book ai didi

regex - GWT 正则表达式和空字符串

转载 作者:行者123 更新时间:2023-12-04 05:40:34 25 4
gpt4 key购买 nike

有人可以解释为什么这个片段:

// import com.google.gwt.regexp.shared.MatchResult;
// import com.google.gwt.regexp.shared.RegExp;

RegExp regExp = RegExp.compile("^$");
MatchResult matcher;
while ((matcher = regExp.exec("")) != null)
{
System.out.println("match " + matcher);
}

给出令人难以置信的匹配数?我使用 compile()、g、i 和 m 的 GWT 实现所允许的不同修饰符进行了测试。它仅适用于 m(多行)。
我只想检查空字符串。

[编辑] 新方法
private ArrayList<MatchResult> getMatches(String input, String pattern)
{
ArrayList<MatchResult> matches = new ArrayList<MatchResult>();
if(null == regExp)
{
regExp = RegExp.compile(pattern, "g");
}
if(input.isEmpty())
{
// empty string : just check if pattern validate and
// don't try to extract matches : it will resutl in infinite
// loop.
if(regExp.test(input))
{
matches.add(new MatchResult(0, "", new ArrayList<String>(0)));
}
}
else
{
for(MatchResult matcher = regExp.exec(input); matcher != null; matcher = regExp
.exec(input))
{
matches.add(matcher);
}
}
return matches;
}

最佳答案

您的 regExp.exec("")RegExp.compile("^$")永远不会回来null , 作为空字符串 ""匹配正则表达式 ^$ ,其读作“行/字符串的开头和结尾之间没有任何内容”。

所以你的 while是无限循环。

另外,您打印的是

System.out.println("match " + matcher);

...但你可能想使用
System.out.println("match " + matcher.getGroup(0));

另见 GWT checking if textbox is empty .

关于regex - GWT 正则表达式和空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11310430/

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