当需要使用双反斜杠或单反斜杠来转义字符时,有人能向我解释使用正则表达式吗?
许多联机引用使用单个反斜杠,在线regex测试人员使用单个反斜杠,但在实践中,我常常不得不使用双反斜杠来转义字符。
例如:
"SomeString\."在在线regex测试器中工作,并匹配"SomeString“和一个点。
然而,在实践中,我必须使用双重转义:
if (Regex.IsMatch(myString, "SomeString\\."))发布于 2014-09-11 09:20:36
C#没有用于构造正则表达式的特殊语法,比如Perl、Ruby或JavaScript do。相反,它使用一个接受字符串的构造函数。但是,字符串有自己的转义机制,因为您希望能够在字符串中放置引号。因此,有两个层次的逃避。
因此,在正则表达式中,w表示字母"w",而\w表示单词字符。但是,如果您生成一个字符串"\w",您将转义字符"w",这是没有意义的,因为字符"w“不是引号或反斜杠,所以"w" == "\w"。然后,这个只包含"w“的字符串被传递给regexp构造函数,您将最终匹配字母"w”,而不是任何单词字符。因此,要将反斜杠传递给regexp,需要在字符串文本(\\w)中添加两个反斜杠:一个在字符串文本被解释时被删除,一个将被正则表达式使用。
当直接使用正则表达式时(例如在大多数在线regexp测试程序上,或者在使用逐字字符串@"..."时),您不必担心字符串文字的解释,而且您总是只编写一个反斜杠(除非您希望匹配反斜杠本身,但随后是为regexp而不是为字符串执行反斜杠)。
发布于 2014-09-11 09:18:34
也是c#中字符串文本的转义字符,因此第一个\转义传递给该方法的第二个\,第二个转义。在大殿里。
使用:
if (Regex.IsMatch(myString, @"SomeString\."))如果你想避免双重逃跑。
发布于 2018-08-10 13:18:20
旧帖子,但Regex.Escape可能有用
https://stackoverflow.com/questions/25783523
复制相似问题