这个正则表达式 `str.gsub(/\#(.*?)/)` 有啥作用? [复制]
Posted
技术标签:
【中文标题】这个正则表达式 `str.gsub(/\\#(.*?)/)` 有啥作用? [复制]【英文标题】:What does this regex `str.gsub(/\#(.*?)/)` do? [duplicate]这个正则表达式 `str.gsub(/\#(.*?)/)` 有什么作用? [复制] 【发布时间】:2013-06-08 02:45:19 【问题描述】:.*
表示任何字符,那么为什么下面需要.*?
?
str.gsub(/\#(.*?)/) eval($1)
【问题讨论】:
那个?意思是:使量词变得懒惰。看看这个网站:www.regular-expressions.info 这个正则表达式会做一些事情,你应该只在$SAFE >= 1
上做这些事情。
【参考方案1】:
.*
是贪婪匹配,而.*?
是非贪婪匹配。有关它们的快速教程,请参阅 this link。贪婪匹配将尽可能匹配,而非贪婪匹配将尽可能少匹配。
在本例中,贪心变体抓取第一个 和最后一个
(最后一个右大括号)之间的所有内容:
'start #this is a matchand so is this end'.match(/\#(.*)/)[1]
# => "this is a matchand so is this"
虽然非贪婪变量的读取量尽可能少地进行匹配,但它只在第一个 和第一个连续的
之间读取。
'start #this is a matchand so is this end'.match(/\#(.*?)/)[1]
# => "this is a match"
【讨论】:
以上是关于这个正则表达式 `str.gsub(/\#(.*?)/)` 有啥作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章