2009-04-10 5 views
0

ユーザー入力を正規表現のリテラル値に変換したいときがあります。私。ユーザがC:\Win\Bin\File.txtと入力すると、特定の文字の組み合わせをエスケープする必要があるため、正規表現はC:\\Win\\Bin\File.txtのようになります。誰かが、これを行う試行錯誤したコード、またはこれを自動的に行う他の技術を知っていますか?ユーザー入力をリテラル正規表現に変換するコードはありますか? (C#)

+0

"C:\ Win \ Bin \ File.txt"と "C:\ Win \ Bin \ File.txt"の例ではどのような違いがありますか? –

+0

シンボリック文字をリテラル文字に変換することを「エスケープ」と呼びます。あなたが必要とするのは、バックスラッシュのような記号文字を含むことができないように、ユーザー入力を "エスケープ"することです。あなたの技術的環境に応じて、これを実現するための確実な方法があります。 – bzlm

答えて

3

Regex.Escape()を試しましたか?

など。

var userInputRegex = new Regex(Regex.Escape(userInput));
+0

はい、それは.NETで動作します。 "これは正規表現エンジンに、これらの文字をメタキャラクタとしてではなく文字通りに解釈するように指示します"。 – bzlm

+0

+1は良い答えですが、なぜ誰もvarsを使っていますか? –

+0

彼らの視力は右の "新しい正規表現"を読むことができるほど十分です。そして、彼らはリファクタリングをより簡単にしたいからです。また、コードの可読性を向上させるために、「どのように」、「どのように」より多くの情報を表示する必要があるからです。問題は、ここ数年のどこにいたのですか? – bzlm

関連する問題