在Perl中删除非字母数字字符的字符串

3

我曾经在Perl中多次使用过字符串替换,可以用特定的子字符串替换其他内容。

我很好奇是否有技巧只保留某些字符,特别是我想从字符串中删除任何不是a-z、A-Z或0-9的字符。

例如, a b c !@#$%^&*()_~+=[]{}\|;':",./<>? 123 将变成 abc123

1个回答

4

使用正则表达式,

s/[^a-zA-Z0-9]//g;

使用翻译功能,
tr/a-zA-Z0-9//dc;

@VenomFangs,你可以选择任何字符作为分隔符。 - mpapec
2
@VenomFangs:如果你想进行正则表达式的匹配,那么你可以省略 m,只要使用默认的 / 分隔符,所以 /abc/m/abc/ 以及 m~abc~ 是相同的。通常你会使用斜杠,除非模式本身包含斜杠,这时 m~a/b~ 比 'm/a/b/' 更清晰。一个替换总是有前导的 s,所以你可以使用任何分隔符,但值得指出的是类似括号的字符是成对出现的,所以 s/abc/def/s<abc><def> 以及 s<b>{x} 是相同的。 - Borodin
有没有像\w这样的快捷方式?Unicode 安全性呢? - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接