我无法告诉Regex忽略任何转义序列。
以下是一些示例代码:
string input = "?";
foreach (Match m in Regex.Matches(input, "?"))
{
...
}
但是当它被执行时,它会抛出以下错误: 解析“?” - 量词{x,y}无效。
我只想要“?”作为一个字符串处理。
感谢。
编辑: 我也尝试过:
foreach (Match m in Regex.Matches(input, "\?"))
{
...
}
告诉我,这不是一个有效的转义序列。
我也试过了:
foreach (Match m in Regex.Matches(input, "\x3f"))
{
...
}
答案 0 :(得分:11)
.NET提供了一个自动为您进行任何转义的函数。每当你有某种输入字符串,你想要匹配字面(只是那里的字符),但你知道你使用正则表达式搜索,然后通过这种方法运行它们:
string pattern = Regex.Escape(literalString);
这将处理可能是正则表达式的元字符的任何字符。
答案 1 :(得分:2)
您需要转义正则表达式引擎的?
,因为?
在正则表达式中具有特定含义作为量词:
\?
您还需要使用verbatim string literals,因此\
作为C#字符串转义序列没有特殊含义 - 这两者是等效的 - @"\?"
和"\\?"
。
所以:
string input = "?";
foreach (Match m in Regex.Matches(input, @"\?"))
{
...
}
通常,反斜杠\
是正则表达式中的转义序列。
答案 2 :(得分:1)
你需要逃脱吗?如
\\?
在正则表达式中,而不是在文本中。
查看这篇文章:
http://www.codeproject.com/Articles/371232/Escaping-in-Csharp-characters-strings-string-forma
答案 3 :(得分:0)