gpt4 book ai didi

Java 正则表达式 : Word Boundary Matcher in a String Literal

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

Java 代码:

import java.util.regex.*;

class Test {
public static void main(String[] args) {
String r = "\\bdog\\b";
Pattern p = Pattern.compile(r);
String text = "abc dog def";
System.out.println(p.matcher(text).matches());
}
}

等效的 Perl 代码:

$x = "abc dog def";
if ($x =~ /\bdog\b/) {
print "matches";
}

Perl 代码的行为符合预期,并打印出字符串“abc Dog def”与给定的正则表达式匹配。另一方面,Java 代码表示该字符串与正则表达式不匹配。我犯了一些愚蠢的错误吗?有趣的是,如果我在 cmd 行上输入正则表达式(而不是字符串文字),如 Oracle Docs 所示,然后就可以正常工作了。

最佳答案

不同之处在于 Java 中的 matches 意味着匹配整个字符串,而不是像 Perl 中那样仅匹配其中的一部分。就好像存在隐式的 ^$ 一样。

很容易知道,在 Java 中,

  • find 查找字符串中任意位置的匹配项(并且可以迭代)
  • lookingAt 查找字符串开头的匹配
  • matches 想要匹配整个字符串

另请参阅

关于Java 正则表达式 : Word Boundary Matcher in a String Literal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21274040/

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