gpt4 book ai didi

java - 空格不匹配

转载 作者:行者123 更新时间:2023-11-29 10:16:59 24 4
gpt4 key购买 nike

当我运行时:

String line = "  test";
Pattern indentationPattern = Pattern.compile("^[\\s]+");
Matcher indentationMatcher = indentationPattern.matcher(line);

if (indentationMatcher.matches()) {
System.out.println("Got match!");

int indent = indentationMatcher.group(0).length();
System.out.println("Size of match: " + indent);
} else {
System.out.println("No match! :(");
}

我找不到匹配项。这里发生了什么?我在 http://www.regexplanet.com/advanced/java/index.html 在线测试了正则表达式这似乎是专门为测试 Java 中的正则表达式而设计的。

最佳答案

改变了一些东西,看评论:

String line = "  test";
Pattern indentationPattern = Pattern.compile("^(\\s+)"); // changed regex
Matcher indentationMatcher = indentationPattern.matcher(line);

if (indentationMatcher.find()) { // used find() instead of matches()
System.out.println("Got match!");

int indent = indentationMatcher.group(1).length(); // group 1 instead of 0
System.out.println("Size of match: " + indent);
} else {
System.out.println("No match! :(");
}

输出:

Got match!
Size of match: 2

上述变化的原因:

find() 尝试在输入中查找模式并在找到时给出 true。也可以多次使用,例如 while (matcher.find()) { ... } 从输入中查找所有匹配项。

matches() 尝试将完整的输入与模式匹配,并且仅在完整的输入与正则表达式匹配时才给出 true

整个模式是第0组,第一个捕获组()的内容是第1组。在这种情况下没有区别,因为在捕获组之外,只有开始^ 行,其长度/宽度为 0。

关于java - 空格不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15006726/

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