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