首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用\或\\逃离?

问用\或\\逃离?
EN

Stack Overflow用户
提问于 2014-09-11 09:14:20
回答 4查看 29K关注 0票数 10

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

许多联机引用使用单个反斜杠,在线regex测试人员使用单个反斜杠,但在实践中,我常常不得不使用双反斜杠来转义字符。

例如:

代码语言:javascript
复制
"SomeString\."

在在线regex测试器中工作,并匹配"SomeString“和一个点。

然而,在实践中,我必须使用双重转义:

代码语言:javascript
复制
if (Regex.IsMatch(myString, "SomeString\\."))
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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而不是为字符串执行反斜杠)。

票数 22
EN

Stack Overflow用户

发布于 2014-09-11 09:18:34

也是c#中字符串文本的转义字符,因此第一个\转义传递给该方法的第二个\,第二个转义。在大殿里。

使用:

代码语言:javascript
复制
if (Regex.IsMatch(myString, @"SomeString\."))

如果你想避免双重逃跑。

票数 6
EN

Stack Overflow用户

发布于 2018-08-10 13:18:20

旧帖子,但Regex.Escape可能有用

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25783523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档