在perl中,用s///进行替换的问题$_="huge dinosaur"s/\w+$/($`!)$&/; #结果为什么是“huge(huge )dinosaur” s/\s+(!\w+$)/$1/; #结果为什么还是“huge(huge )dinosaur”请解释一下s/huge/gigantic/; #为什么只替换了第
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/30 20:01:54
![在perl中,用s///进行替换的问题$_=](/uploads/image/z/11405437-61-7.jpg?t=%E5%9C%A8perl%E4%B8%AD%2C%E7%94%A8s%2F%2F%2F%E8%BF%9B%E8%A1%8C%E6%9B%BF%E6%8D%A2%E7%9A%84%E9%97%AE%E9%A2%98%24_%3D%22huge+dinosaur%22s%2F%5Cw%2B%24%2F%28%24%60%21%29%24%26%2F%3B+%23%E7%BB%93%E6%9E%9C%E4%B8%BA%E4%BB%80%E4%B9%88%E6%98%AF%E2%80%9Chuge%EF%BC%88huge+%EF%BC%89dinosaur%E2%80%9D+s%2F%5Cs%2B%28%21%5Cw%2B%24%29%2F%241%2F%3B+%23%E7%BB%93%E6%9E%9C%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%98%E6%98%AF%E2%80%9Chuge%EF%BC%88huge+%EF%BC%89dinosaur%E2%80%9D%E8%AF%B7%E8%A7%A3%E9%87%8A%E4%B8%80%E4%B8%8Bs%2Fhuge%2Fgigantic%2F%3B+%23%E4%B8%BA%E4%BB%80%E4%B9%88%E5%8F%AA%E6%9B%BF%E6%8D%A2%E4%BA%86%E7%AC%AC)
在perl中,用s///进行替换的问题$_="huge dinosaur"s/\w+$/($`!)$&/; #结果为什么是“huge(huge )dinosaur” s/\s+(!\w+$)/$1/; #结果为什么还是“huge(huge )dinosaur”请解释一下s/huge/gigantic/; #为什么只替换了第
在perl中,用s///进行替换的问题
$_="huge dinosaur"
s/\w+$/($`!)$&/; #结果为什么是“huge(huge )dinosaur”
s/\s+(!\w+$)/$1/; #结果为什么还是“huge(huge )dinosaur”请解释一下
s/huge/gigantic/; #为什么只替换了第一个huge没有替换第二个?
出自小骆驼 166页
在perl中,用s///进行替换的问题$_="huge dinosaur"s/\w+$/($`!)$&/; #结果为什么是“huge(huge )dinosaur” s/\s+(!\w+$)/$1/; #结果为什么还是“huge(huge )dinosaur”请解释一下s/huge/gigantic/; #为什么只替换了第
$_="huge dinosaur"
s/\w+$/($`!)$&/; #结果为什么是“huge(huge !)dinosaur” 请解释一下
$` 又叫 pre-match, 就是匹配字串"之前" 的东西,
因为匹配到的是 "dinosaur" 所以其前面的就是 huge
$& 又叫 match, 就是匹配到字串,
因为匹配到的是 "dinosaur" 所以最後加上 "dinosaur"
s/\s+(!\w+$)/$1/; #结果为什么还是“huge(huge !)dinosaur”请解释一下
这个很简单, 因为根本找不到匹配, 所以没有进行过替换, 原封还给你了
s/huge/gigantic/; #为什么只替换了第一个huge没有替换第二个?
因为这不是 greedy(贪婪), 只要完成一次匹配就会返回, 如果你还想换掉第 2 个
你可以写成 s/huge/gigantic/g;