【发布时间】:2015-09-18 12:12:48
【问题描述】:
我目前对 bash 的一种未解决的问题是如何替换 [:punct:] 类中的所有字符,即
[!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]
,每个都用反斜杠转义相同的字符。比如我想让^h?e.l*l+o:变成\^h\?e\.l\*l\+o\:。
我可以通过循环以多线方式进行。有没有可能用更简洁优雅的方式来做呢?
谢谢, 卢卡
【问题讨论】:
-
您确定要转义 all 标点符号,还是只转义在某些情况下具有特殊含义的标点符号?用例是什么? (可能有各种简单的替代方案,具体取决于为什么它们需要被转义。)
-
this question 有帮助吗?
-
@chepner 你可能是对的。为了简单起见,我尝试转义所有标点符号,但是如果转义,撇号 ' (可能还有一些我尚未测试过的其他字符)存在问题,它与自身不再匹配。我基本上想转义正则表达式和 glob 元字符。最简单的解决方案是删除它们,如
[!#$%&()*+,\-./:;<=>?@[\\\]^_{|}~]。还有其他方法吗? -
是的,还有许多其他方法,如上面@EtanReisner 引用的帖子中的两个 cmets。谢谢,我学到了很多。
标签: regex bash string-substitution