gpt4 book ai didi

java - RegExp 适用于 perl、javascript 和 objective-c 但不适用于 java

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:49 24 4
gpt4 key购买 nike

我正在将代码从 Javascript 转换为 Java,我发现一个正则表达式在 Java 中不能按预期工作(使用标准类 Pattern)。

它在 perl、js 和 Cocoa 中使用 NSRegularExpression 都可以正常工作

reg exp是([a-z]*) ([0-9]*) java代码如下所示

它必须匹配两个由空格分隔的组,第一组只包含字母,第二组只包含数字

public static void main(String[] args) {
Matcher matcher = Pattern.compile("([a-z]*) ([0-9]*)").matcher("hello 101");
while (matcher.find()) {
for (int i = 0; i < matcher.groupCount(); i++) {
System.out.println(i + ": " + matcher.group(i));
}
}

永远不会返回数字组。怎么了?

最佳答案

你太早结束了你的for循环:

for (int i = 0; i <= matcher.groupCount(); i++) {
// ^^
System.out.println(i + ": " + matcher.group(i));
}

有两个捕获组,.groupCount() 是 2:

  • .group(0)是整场比赛
  • .group(1) 包含第一个捕获组匹配的文本
  • .group(2) 包含第二个捕获组匹配的文本

如果你在 1 处停止 i,你永远不会到达第二组。

关于java - RegExp 适用于 perl、javascript 和 objective-c 但不适用于 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18821752/

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