繁体   English   中英

忽略正则表达式转义序列C#

[英]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);

这将处理可能是正则表达式的元字符的任何字符。

MSDN on Escape

你需要逃避? 对于正则表达式引擎,如何? 具有特定含义作为正则表达式中的量词:

\?

您还需要使用逐字字符串文字,因此\\作为C#字符串转义序列没有特殊含义 - 这两个是等价的 - @"\\?" "\\\\?"

所以:

string input = "?";
foreach (Match m in Regex.Matches(input, @"\?"))
{
     ...
}

一般情况下,反斜杠\\是正则表达式的转义序列。

你需要逃脱? 作为\\\\?

在正则表达式而不是在文本中。

看看这篇文章:

http://www.codeproject.com/Articles/371232/Escaping-in-Csharp-characters-strings-string-forma

使用内置的Escape方法。

Regex.Escape("/")

另请参见MSDN RegEx.Escape()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM