gpt4 book ai didi

java - 了解正则表达式输出

转载 作者:行者123 更新时间:2023-12-01 07:07:27 24 4
gpt4 key购买 nike

我需要帮助来理解下面代码的输出。我无法弄清楚 System.out.print(m.start() + m.group()); 的输出。请问有人可以给我解释一下吗?

import java.util.regex.*;
class Regex2 {
public static void main(String[] args) {
Pattern p = Pattern.compile("\\d*");
Matcher m = p.matcher("ab34ef");
boolean b = false;
while(b = m.find()) {
System.out.println(m.start() + m.group());
}
}
}

输出是:

0
1
234
4
5
6

请注意,如果我输入 System.out.println(m.start() ); ,输出为:

0
1
2
4
5
6

最佳答案

因为您包含了 * 字符,所以您的模式也将匹配空字符串。当我更改你的代码时as I suggested in the comments ,我得到以下输出:

0 ()
1 ()
2 (34)
4 ()
5 ()
6 ()

因此,您有大量空匹配项(匹配字符串中的每个位置),但 34 除外,它匹配数字字符串。如果您想匹配数字而不匹配空字符串,请使用 \\d+ ..

关于java - 了解正则表达式输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20900142/

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