0

正規表現に慣れていません。

文字列の場合、文字と数字以外のすべての文字をスペースに置き換えてから、スペースをマージして、スペースが 2 つ連続しないようにしたいと考えています。

正規表現を使用してそれを達成する方法は?

4

4 に答える 4

2

2枚のパスが必要です

交換

[^a-zA-Z0-9]

1スペースあり

交換

[ ]{2,}

1スペースあり

于 2012-06-28T20:59:40.353 に答える
2

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

単一の正規表現でこれを行うかどうかはわかりませんが、2つだとうまくいくようです

 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 に答える