2017-06-14 5 views
1

私はC#でユーザーが名前を入力できる小さなパーサーを構築しています。今、これらの名前はthreeformatsになります句読点を削除するが、スラッシュを無視する正規表現ですか?

"name" OR "name/name" OR "name-name" 

ユーザーが、私は正規表現が起こって得たこれらを削除するには、このようなname?name.など、さまざまな句読点と入力文字列を書くかもしれませんが、次のようになります。

var expression = "name/name"; 
    var regexPunctuation = new Regex(@"[^-\w\s]"); 
    expression = regexPunctuation.Replace(expression, string.Empty); 

私の正規表現は、間に-という単一の名前と名前で動作しますが、名前にはスラッシュが付きません。ユーザーがname/nameを入力すると、結果はちょうどname nameになります。正規表現をスラッシュを無視するように変更すると、結果はname/nameになりますか? name/nameの余分なスペースに注意してください。このような/をエスケープしてみ

new Regex(@"[^-/\w\s]") 
+1

あなたは無視するパターンにスラッシュを追加しようとしましたか? '新しい文字列(@" [^ - \ w \ s /] "); ' – DolceVita

+0

文字列を最初に分割し、2つの部分文字列のそれぞれを処理してから元に戻します。 '/'がなければ、 'name'部分だけを処理します。 –

+0

余分なスペースは問題と何が関係していますか?あなたは「メモをとってください」と言いますが、私が見る限りでは、彼らは問題とは何の関係もありません。関連性がある場合は、詳細を説明してください。 –

答えて

0

それはようにする必要がありnew Regex(@"[^-\/\w\s]")

+0

それを試してみて、違いはありません。 – leffe10

+1

http://imgur.com/C468GZ6プログラムの別の部分に何か問題があるかもしれませんか? – fdafadf

+0

これは、質問のコードスニペットをパターンに追加スラッシュを付けて使用することで、私にとってはうまくいきます。 –

0
var regexPunctuation = new Regex(@"[^-\/\w\s]"); 
+0

スラッシュをエスケープする必要はありません。 /は正規表現のメタ文字ではありません。 –

関連する問題