.NETRegex
パターンでは、文字通り使用するためにどの特殊文字をエスケープする必要がありますか?
質問する
21090 次
4 に答える
47
私は文字の完全なセットを知りませんが、とにかくその知識に頼ったり、コードに入れたりしません。代わりに、Regex.Escape
よくわからないリテラルテキストが必要な場合はいつでも使用します。
// Don't actually do this to check containment... it's just a little example.
public bool RegexContains(string haystack, string needle)
{
Regex regex = new Regex("^.*" + Regex.Escape(needle) + ".*$");
return regex.IsMatch(haystack);
}
于 2012-10-18T20:29:29.580 に答える
30
通常のリテラルとして使用するためにエスケープする必要がある文字のリストは次のとおりです。
- 角かっこを開く
[
- バックスラッシュ
\
- カレット
^
- ドル記号
$
- ピリオドまたはドット
.
- 垂直バーまたはパイプ記号
|
- 疑問符
?
- アスタリスクまたはスター
*
- プラス記号
+
- 開き角かっこ
(
と閉じかっこ)
- 中かっこを開く
{
- ポンド/ハッシュ記号
#
これらの特殊文字は、しばしば「メタ文字」と呼ばれます。
しかし、私はJonがRegex.Escape
これらの文字をコードにハードコーディングする代わりに使用することに同意します。
于 2013-02-09T11:26:10.537 に答える
14
I think you can get the list of chars as
List<char> chars = Enumerable.Range(0,65535)
.Where(i=>((char)i).ToString()!=Regex.Escape(((char)i).ToString()))
.Select(i=>(char)i)
.ToList();
--
\t\n\f\r#$()*+.?[\^{|
于 2012-10-18T20:36:46.457 に答える
14
こちらの MSDN ドキュメントを参照してください: http://msdn.microsoft.com/en-us/library/az24scfc.aspx#character_escapes
完全なリストの問題は、コンテキストに依存することです。たとえば.
、 のように括弧で囲まれていない限り、エスケープする必要があります[.]
。]
が先行しない限り、技術的にエスケープする必要はありません[
。-
のように括弧内にない限り、特別な意味はありません[A-Z]
。as in=
が前に付いていない限り、特別な意味はありません。?
(?=)
于 2012-10-18T20:29:27.600 に答える