正则表达式(?:pattern)跟(pattern)有什么区别

qq_35570369 2016-07-17 01:57:25
不要说(?:pattern)不捕捉字符串,math的时候,还是返回pattern的内容。
...全文
321 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxd5211314 2018-12-13
  • 打赏
  • 举报
回复
它是忽略分组的意思,在replace中$1,$2,$3...代表分组的概念,当你想要匹配到某个字符串替换顺序的时候会用到,例如:2015-02-03你想要匹配且替换为03-02-2015 那么就是'2015-02-03'.replace(/(\d{4})-(\d{2})-(\d{2})/,'$3-$2-$1')就行了。一个括号代表一个分组,所以?:是忽略分组的意思,比如你真的只是想要括起来而不是为了分组用的,那就派上用场了。
秋的红果实 2016-07-17
  • 打赏
  • 举报
回复
https://msdn.microsoft.com/zh-cn/library/az24scfc(v=vs.110).aspx
xuzuning 2016-07-17
  • 打赏
  • 举报
回复
不是 (?:pattern) 不匹配串,而是被匹配的串不计算在 向后引用 中
qq_35570369 2016-07-17
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
代表Group是否捕获,即match.Groups[N]是否要捕获 简单地说,对于整个正则表达式来说,一定会匹配,但对于组来说,两者有区别
我又百度了下,似乎替换字符串的时候(?:)不算在$里面。。。 啊啊,这,结合层主的话,好像知道点什么。
  • 打赏
  • 举报
回复
代表Group是否捕获,即match.Groups[N]是否要捕获 简单地说,对于整个正则表达式来说,一定会匹配,但对于组来说,两者有区别

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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