gpt4 book ai didi

c# - 正则表达式转义与\或\\?

转载 作者:太空狗 更新时间:2023-10-30 00:01:24 25 4
gpt4 key购买 nike

当使用正则表达式需要使用双反斜杠或单反斜杠来转义字符时,有人可以向我解释一下吗?

许多在线引用资料都使用单个反斜杠,在线正则表达式测试人员使用单个反斜杠,但实际上我经常不得不使用双反斜杠来转义字符。

例如:

"SomeString\."

在在线正则表达式测试器中工作并匹配“SomeString”后跟一个点。

但是在实践中我必须使用双重转义:

if (Regex.IsMatch(myString, "SomeString\\."))

最佳答案

C# 没有像 Perl、Ruby 或 JavaScript 那样的用于构造正则表达式的特殊语法。相反,它使用一个接受字符串的构造函数。但是,字符串有自己的转义机制,因为您希望能够在字符串中加上引号。因此,有两个级别的转义。

因此,在正则表达式中,w 表示字母“w”,而\w 表示单词字符。然而,如果你创建一个字符串 "\w",你将转义字符 "w",这是没有意义的,因为字符 "w"不是引号或反斜杠,所以 "w"== "\w"。然后这个只包含“w”的字符串被传递给正则表达式构造函数,你最终匹配字母“w”而不是任何单词字符。因此,要将反斜杠传递给正则表达式,您需要在字符串文字 (\\w) 中放入两个反斜杠:一个将在解释字符串文字时删除,一个将被使用正则表达式。

当直接使用正则表达式时(例如在大多数在线正则表达式测试器上,或者当使用逐字字符串 @"..." 时),您不必担心字符串的解释文字,你总是只写一个反斜杠(除非你想匹配反斜杠本身,但你要为正则表达式而不是字符串转义反斜杠)。

关于c# - 正则表达式转义与\或\\?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25783523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com