【发布时间】:2023-03-07 23:34:01
【问题描述】:
我想以非贪婪匹配方式进行字符串替换
删除所有前导和尾随破折号、撇号(当这些符号出现在单词中间时,必须保留)
将多个空格转化为1个空格
例子:
--ONE Tw'o-- -333- -'FO-UR'
必须成为
ONE Tw'o 333 FO-UR
我无法得到确切的结果。你能帮我更正下面的 perl 和 sed 语法吗?
$ echo "--ONE Tw'o-- -333- -'FO-UR'" \
| perl -pe "s/[-']+(.+?)/\1/g" \
| perl -pe "s/(.+?)[-']+/\1/g" \
| perl -pe "s/\s+/ /g"
Result (perl): "ONE Two 333 FOUR"
$ echo "--ONE Tw'o-- -333- -'FO-UR'" \
| sed -r -e "s/[-']+(.+?)/\1/g" \
-e "s/(.+)[-']+/\1/g" \
-e "s/\s+/ /g"
Result (sed): "ONE Tw'o-- -333- -'FO-UR"
【问题讨论】: