【发布时间】:2015-02-22 21:54:15
【问题描述】:
我在 Perl 中使用过几次字符串替换,并且有特定的子字符串并用其他东西替换它们。
我很好奇是否有只保留某些字符的技巧,特别是我想从字符串中删除任何不是 a-z、A-Z 或 0-9 的字符。
例如, a b c !@#$%^&*()_~+=[]{}\|;':",./<>? 123 就是 abc123。
【问题讨论】:
我在 Perl 中使用过几次字符串替换,并且有特定的子字符串并用其他东西替换它们。
我很好奇是否有只保留某些字符的技巧,特别是我想从字符串中删除任何不是 a-z、A-Z 或 0-9 的字符。
例如, a b c !@#$%^&*()_~+=[]{}\|;':",./<>? 123 就是 abc123。
【问题讨论】:
使用正则表达式,
s/[^a-zA-Z0-9]//g;
使用翻译,
tr/a-zA-Z0-9//dc;
【讨论】:
m,只要你使用默认的/分隔符,所以/abc/与m/abc/ 和m~abc~ 相同。通常你会使用斜杠,除非模式本身包含斜杠,当 m~a/b~ 比 'm/a\/b/. A *substitution* always has the leading s` 更清晰时,你可以随时使用任何你喜欢的分隔符,但值得指出的是类似括号的字符是配对的,所以 s/abc/def/ 与 s<abc><def> 和 s<b>{x} 相同。
\w的快捷方式吗? Unicode 安全性如何?