简单的正则表达式

时间:2012-06-28 20:57:55

标签: regex

我不熟悉正则表达式。

对于字符串,我想用空格替换所有非字母和非数字字符,然后合并空格,使得没有两个连续的空格。

如何使用正则表达式实现?

4 个答案:

答案 0 :(得分:2)

你需要2次传球

替换

[^a-zA-Z0-9]

有1个空格

替换

[ ]{2,}

有1个空格

答案 1 :(得分:2)

使用两个替换:

  1. [^a-zA-Z0-9]替换为空格
  2. [ ]{2,}替换为一个空格(此处仅需要字符类,因为SO的解析器会混乱 - 通常空间就足够了)
  3. 在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