这个简单的正则表达式程序
import java.util.regex.*;
class Regex {
public static void main(String [] args) {
System.out.println(args[0]); // #1
Pattern p = Pattern.compile(args[0]); // #2
Matcher m = p.matcher(args[1]);
boolean b = false;
while(b = m.find()) {
System.out.println(m.start()+" "+m.group());
}
}
}
java regex "\d" "sfdd1"
由编译调用并运行良好。
但是如果 #1 被 替换Pattern p = Pattern.compile("\d");
,它会给出编译器错误,说非法转义字符。在#1 中,我还尝试打印命令行参数中指定的模式。它打印\d
,这意味着它只是\d
在 #2 中被替换。
那么为什么它不会抛出任何异常呢?最后是字符串参数,Pattern.compile()
那么它不会检测到非法转义字符吗?有人可以解释为什么会这样吗?