【发布时间】:2022-11-04 02:32:31
【问题描述】:
这是为了强调在从 C# 调用时使用 @ 运算符对 Regex 的帮助。它已被标记为重复,即使被认为是它正在复制的原始问题甚至没有提到正则表达式。
参考堆栈溢出问题:
Philippe Leybaert 给出的答案是:
Regex.Match(content, @"\b(shoes|shirt|pants)\b");
@ 是干什么用的? 它似乎是字面意思,尽管我认为:
该|被解释为 OR 运算符而不是实际 |特点。 除非@在那里,否则这似乎也行不通。
上述说法是否属实?
【问题讨论】:
-
仅供参考,这与正则表达式无关。
-
@"\b(shoes|shirt|pants)\b" == "\\b(shoes|shirt|pants)\\b" -
正则表达式将起作用。正则表达式是一个文本,
\b(shoes|shirt|pants)\b。你所展示的是一个字符串字面量.两个链接都解释了@的作用。 -
@JosephDoggie 当然,因为
@"|"="|"并定义了一个|字符。如果您需要匹配文字|,请将其转义。见What special characters must be escaped in regular expressions? -
@JosephDoggie 简单地说,在 C# 中,如果你想写一个文字反斜杠,你有两个选择。要么通过连续写两次来转义它,要么在逐字字符串中写一次(即,前面有
@)。现在,该反斜杠是否是正则表达式模式的一部分并不重要;规则是一样的。|字符确实不是需要在 C# 字符串中进行转义,因此无论是否逐字都无关紧要。但是,如果您希望正则表达式模式具有文字管道字符,那么您需要使用反斜杠对其进行转义。