问一个正则表达式问题

lsdkzkald 2017-09-11 04:01:09
String str = "hello , java!";
System.out.println(str.replaceFirst("\\w*?","#"));

这个正式表达式用的是勉强模式,也就是匹配0个字符,但为什么会输出:#hello ,java! 应该是输出:hello ,java! 的啊,因为根本就没有匹配任何字符 也就是说不会替换字符的啊,为什么是在字符串前面加了# 呢? 求高手解答。
...全文
280 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zbillow 2017-09-11
  • 打赏
  • 举报
回复
System.out.println(str.replaceFirst("\\w*?","#"));等于System.out.println(str.replaceFirst("","#")); 替换了"hello , java!"字符串的第一个空字符,所以结果为"#hello , java!"
一个治疗术 2017-09-11
  • 打赏
  • 举报
回复
当 ? 跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧