在perl中,用s///进行替换的问题$_="huge dinosaur"s/\w+$/($`!)$&/; #结果为什么是“huge(huge )dinosaur” s/\s+(!\w+$)/$1/; #结果为什么还是“huge(huge )dinosaur”请解释一下s/huge/gigantic/; #为什么只替换了第
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 12:29:58
在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;