Java-为什么同一个正则表达式匹配了多个字符串并输出了相同的值?
为什么正则表达式"\d+\.?\d*"可以匹配
- "It costs $12.5"
- "It costs $12..5"
- "It costs $12...5"
- "It costs $12....5"
- 而且结果都是12.5
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
正则表达式“d+.?d*”的意思是数字至少出现一次,后跟一个“.”,然后再跟0个或多个数字。也就是说不管数字中间出现了多少个小数点,都只会保留一个。所以你的正则表达式匹配的字符串的结果就为12.5。
星号和问号都是可用匹配0次的。所以匹配结果如下
["12.5"]
["12."]
["12."]
["12."]
这个主要看?+的区别,?表示0或者1,(星号)代表0次以上,+代表1次以上,同时还考察d代表数字,(反斜杠).代表.
ps:
java语言实现的时候可以定义如下
String regex = "d+.?d*";
这样得到就是总是12.5这个结果