连字符是正则表达式中的一个特殊字符,例如,要选择一个范围,我可以这样做:
[0-9A-F]
但是在方括号之外它只是一个普通字符,对吗?我已经在几个在线正则表达式测试仪上对此进行了测试,连字符似乎在方括号之外充当正常字符(如果它不在两个字符之间,甚至在方括号内部 - 例如 [-g] 似乎匹配- 或 g) 它是否已逃脱。我找不到这个问题的答案,但我想知道转义连字符是否是传统的。
谢谢!
在所有方面都正确。在字符类之外(这就是所谓的“方括号”),连字符没有特殊含义,在字符类中,您可以将连字符作为范围内的第一个或最后一个字符(例如[-a-z]or [0-9-]), 或者 转义它(例如[a-z\-0-9])为了在您的课程中添加“连字符”。
[-a-z]
[0-9-]
[a-z\-0-9]
更常见的是在角色类别中发现连字符放在第一位或最后一位,但绝不会因为选择逃避它而被成群的愤怒的颈须处以私刑。
(实际上......我的经验是,很多正则表达式被那些不完全理解语法的人所使用。在这些情况下,您通常会看到所有内容都被转义(例如[a-z\%\$\#\@\!\-\_]),只是因为工程师不知道什么是“特别”和什么不是......所以他们“玩得安全”并用大量过度的反斜杠混淆表达。花时间真正理解正则表达式,你将为自己,你的同时代人和你的后代做一个巨大的帮助使用它之前的语法。)
[a-z\%\$\#\@\!\-\_]
好问题!