有谁能帮我理解两种正则表达式的不同之处,并提供适当的示例呢?
- 贪婪匹配
- 非贪婪匹配
谢谢
textstr = "bcabdcab"
textstr.gsub!(/(.*)ab/, "xxx")
# this will match whole `bcabdcab` and return `xxx`
这里的 *
是一个贪婪量词。非贪婪方式下,正则引擎在满足匹配条件时返回结果。要使量词变为非贪婪,只需在其后加上 ?
。
textstr = "bcabdcab"
textstr.gsub!(/(.*?)ab/, "xxx")
# this will match only `bcab` part and return `xxxdcab`
gsub
函数返回将第一个参数中所有匹配模式替换为第二个参数后的字符串副本。
gsub
函数是为了替换所有出现的模式,则第二个应该返回'xxxxxx'。 - Haven*
、+
、?
和{}
。str = "asdfasdfbbbb"
r1 = /b/
r2 = /(asdf)*/
r3 = /b{3}/
r4 = /.*/
/(foo){3}/
) 或无限次 bar(/(bar)*/
)。*
- (0或更多)贪婪匹配+
- (1或更多)贪婪匹配*?
- (0或更多)非贪婪匹配+?
- (1或更多)非贪婪匹配