[英]Ignore Regex escape sequences C#
我无法告诉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"))
{
...
}
.NET提供了一个自动为您进行任何转义的函数。 每当你有某种输入字符串时,你想要字面上匹配(只是那里的字符),但你知道你使用正则表达式搜索,然后通过这个方法运行它们:
string pattern = Regex.Escape(literalString);
这将处理可能是正则表达式的元字符的任何字符。
你需要逃避?
对于正则表达式引擎,如何?
具有特定含义作为正则表达式中的量词:
\?
您还需要使用逐字字符串文字,因此\\
作为C#字符串转义序列没有特殊含义 - 这两个是等价的 - @"\\?"
和"\\\\?"
。
所以:
string input = "?";
foreach (Match m in Regex.Matches(input, @"\?"))
{
...
}
一般情况下,反斜杠\\
是正则表达式中的转义序列。
你需要逃脱? 作为\\\\?
在正则表达式而不是在文本中。
看看这篇文章:
http://www.codeproject.com/Articles/371232/Escaping-in-Csharp-characters-strings-string-forma
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.