java正则表达式,匹配星号的问题
折腾好久了, 这个正则匹配星号一直有问题,不知道原因,目的是匹配行首以“*”开头的“*”,并替换为“ *”。
String content = "/****\n" +
"* \n" +
"* \n" +
"*/ \n ";
// 这样是可以匹替换*"的
content = Pattern.compile("^/\\*").matcher(content).replaceAll(" /*");
// 但是,这样匹配却匹配不到。。
content = Pattern.compile("^\\*").matcher(content).replaceAll(" *");
实在没有想通是怎么回事,"^/\\*" 和"^\\*" 本身不都一样吗 ? 为什么得不到想要的结果呢?
希望各位指点,在下不甚感激。
ps:(在这里贴上星号和反斜杠还要重新转义次, 晕。。。。)
ps2:(原来代码里面的是不用转义的。。 提问的时候预览有问题,请管理员注意下这个问题。谢谢)
==============================
找到解决方法了。。。这里设置一个complie的模式即可
/// 设置成mutiline匹配替换成功!
content = Pattern.compile("^\\*", Pattern.MULTILINE).matcher(content).replaceAll(" *");
不过依然不解。在没有设置flag的时候,为什么前一个匹配能够成功??
Easter
11 years, 5 months ago