我不熟悉正则表达式。
对于一个字符串,我想把所有非字母和非数字的字符都换成空格,然后合并空格,这样就没有两个连续的空格了。
如何使用正则表达式来实现?
您将需要 2 张通行证
代替
[^a-zA-Z0-9]
有 1 个空格
代替
[ ]{2,}
有 1 个空格
使用两个替换:
[^a-zA-Z0-9]
用空格代替[ ]{2,}
用一个空格替换(这里只需要字符类,因为 SO 的解析器搞砸了——通常一个空格就足够了)在 PowerShell 中看起来像
$s -replace '[^a-zA-Z0-9]', ' ' -replace ' {2,}', ' '
听起来你需要一个
replace(mystring, "[^a-zA-Z0-9]+", " ");
不确定是否使用单个正则表达式执行此操作,但两个似乎可以解决问题
echo -n 'dog*&$\@$ cat On1 tw0' |
perl -pe 's/([^([:alnum:])]|\s)/ /g' |
perl -pe 's/\s+/ /g'
输出=dog cat On1 tw0