0

我不熟悉正则表达式。

对于一个字符串,我想把所有非字母和非数字的字符都换成空格,然后合并空格,这样就没有两个连续的空格了。

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

4

4 回答 4

2

您将需要 2 张通行证

代替

[^a-zA-Z0-9]

有 1 个空格

代替

[ ]{2,}

有 1 个空格

于 2012-06-28T20:59:40.353 回答
2

使用两个替换:

  1. [^a-zA-Z0-9]用空格代替
  2. [ ]{2,}用一个空格替换(这里只需要字符类,因为 SO 的解析器搞砸了——通常一个空格就足够了)

在 PowerShell 中看起来像

$s -replace '[^a-zA-Z0-9]', ' ' -replace ' {2,}', ' '
于 2012-06-28T21:00:13.693 回答
0

听起来你需要一个

replace(mystring, "[^a-zA-Z0-9]+", " ");
于 2012-06-28T20:59:33.333 回答
0

不确定是否使用单个正则表达式执行此操作,但两个似乎可以解决问题

 echo -n 'dog*&$\@$ cat   On1 tw0' |
     perl -pe 's/([^([:alnum:])]|\s)/ /g' |
         perl -pe 's/\s+/ /g'

输出=dog cat On1 tw0

于 2012-06-28T21:29:36.663 回答