在正则表达式中转义括号

use*_*725 13 regex

我有一个正则表达式,最后有可选的锚点,例如

(\.|,|\/)
Run Code Online (Sandbox Code Playgroud)

我试图添加")",但如果我逃避它

(/.|,|\/|\))
Run Code Online (Sandbox Code Playgroud)

它没有找到,如果不逃避,它被视为表达式的一部分,因为没有开放的parens而失败.我如何逃脱它,以便它被视为一个角色并被发现?

Tim*_*ker 15

如果要匹配一组字符中的一个,最好使用字符类.在这样的课程中,大多数逃避规则都不适用.

因此,要匹配点,逗号,斜线或右括号,您可以使用

[.,/)]
Run Code Online (Sandbox Code Playgroud)


Far*_*ori 11

\)是逃避禁忌的正确方法.确保正确转义字符串文字中的\(\\).


Ωme*_*Man 5

无需C#转义,使用十六进制代码更加容易;是一个(is 的代码,\x28对应的)\x29

然后在你的模式中使用

\x28[^\x29]+\x29 # which escaped would be \)[^\)]+\)

要么

\x28.+?\x29

哪个可以匹配:

(abc)


我还在正则表达式模式中将双引号(\x22)和单引号(\x27)用作撇号。

使用C#编码时,使用正则表达式模式更加容易。