Ked*_*ade 0 java regex word-boundary
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());
}
}
Run Code Online (Sandbox Code Playgroud)
等效Perl代码:
$x = "abc dog def";
if ($x =~ /\bdog\b/) {
print "matches";
}
Run Code Online (Sandbox Code Playgroud)
Perl代码按预期运行,并打印字符串"abc dog def"与给定的正则表达式匹配.另一方面,Java代码表示该字符串与正则表达式不匹配.我在犯一些愚蠢的错误吗?有趣的是,如果我输入cmd行上的正则表达式(不是字符串文字),如Oracle Docs所示,那么它可以正常工作.
不同之处在于matches,Java意味着匹配整个字符串,而不仅仅是Perl中的一部分.就好像有一个隐含的^和$存在的.
用Java来了解它是很方便的
find 在字符串中的任何地方查找匹配项(并且可以迭代)lookingAt 在字符串的开头查找匹配项matches 想要匹配整个字符串另见
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |