2010-11-18 16 views
2

正規表現を作成しようとしていますが、特定の条件を1つも実行できませんでした。アルファベット以外の文字を空白で置き換える正規表現

ダッシュ(-)を除いて、正規表現で非アルファベット文字をすべて削除する必要があります。ダッシュは、接頭辞がスペースの場合にのみ置き換えてください。

I.e.

TEST-TEST -TEST#TEST.TEST 

は私が[^a-zA-Z0-9]を使用していたが、1つのOR条件のinitを含めることができていない

TEST-TEST TEST TEST TEST 

に変更する必要があります。

+0

であなたの例によると、それが見えます同じように? –

+0

またはアルファ以外の文字をスペースで置き換えますか? –

答えて

2

は私が(\s-|[^A-Za-z0-9-])思い付いたものです...それは、すべての非英数字を除去するが、続ける「 - 」スペースは、その前に存在している場合を除いては、「 - 」で、Linux上でのsed使用して

テスト|私はC#

echo "TEST-TEST -TEST#TEST.TEST -1234" | sed 's/\(\s-\|[^A-Za-z0-9-]\)/ /g' 

出力

TEST-TEST TEST TEST TEST 1234 
  • ()との中にテストするためにVSまたはモノラルへのアクセスを持っていない瞬間私たちは、最初にすべてを削除するか、条件
  • のために使用されている「 - 」\s-
  • 次を使用して、我々はすべての英数字を維持し、「 - 」あなたは、スペースを保持したいよう[^A-Za-z0-9-]
+0

あなたが必要とするのはブラウザです。http://ideone.com/wYU5D –

+1

'var regex = new Regex(@"(\ s- | [^ A-Za-z0-9-]) ");文字列result = regex.Replace( "TEST-TEST#TEST.TEST"、 ""); ' –

+0

これは完全に機能しました。ありがとう。 –

1
// Skip over '-', grab non-word characters or the ' -' sequence to replace 
string pattern = @"(?!-)(\W| -)+"; 
string replacement = ""; 
Regex regex = new Regex(pattern); 
string result = regex .Replace("Replace - this *@#&@#* string-already", replacement); 

( - は?!)「 - 」記号...それはスペースが前にいた場合に第2のグループはそれにマッチします飛ばしますゼロ幅の負の先読みアサーションです。

あなただけのパターンは貪欲なので、それは単一のスペースと非単語の文字のグループを置き換えます

string replacement = " "; 

に変更して、完全に文字を削除するのではなく、スペースを代用しようとしている場合。ここで