正则表达式\$[0-9]+[.]?[0-9]*与\$[0-9]+(?:\.[0-9]*)?的区别 100

正则表达式\$[0-9]+[.]?[0-9]*与\$[0-9]+(?:\.[0-9]*)?的区别... 正则表达式\$[0-9]+[.]?[0-9]*与\$[0-9]+(?:\.[0-9]*)?的区别 展开
 我来答
紫薇参星
科技发烧友

2021-04-11 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3591万
展开全部

这两个正则表达式在匹配的内容上没有区别,都是匹配美元金额(可以是整数或者小数)

只是前一种用的是基本正则符号,后一种用到了非捕获组.

我给你一个php语言的例子,以验证匹配内容没有区别

百度网友c565fb9
2021-04-11 · TA获得超过441个赞
知道小有建树答主
回答量:400
采纳率:88%
帮助的人:110万
展开全部

相同点:

    在不使用引用捕获分组的情况下,两条正则都能从文本中匹配到由“$”开头并且由“.”分割的数字字符串,其实也就是商品价格。 例如从文本:

书名:Python学习手册 价格:$28.88

    匹配得到:$28.88


不同处:

    如果在使用引用捕获分组的情况下的话,第二条正则可以通过引用编号为1的分组获得匹配字符的前半部分,也就是“$28” 从而忽略之后的小数部分,而第一条正则始终只能完整的匹配整个价格字符。

    因为第二条正则使用了非捕获分组在这里也顺便拓展下:

    非捕获分组类似普通的捕获分组,只是在开括号后紧跟一个问号和冒号,这样的括号叫做非捕获型括号,它只能限定量词的作用范围,不捕获任何文本。非捕获分组不需要保存匹配的文本,整个表达式的效率也因此提高,但是看起来不如捕获分组美观。



  






    

    

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式