可能重复:
如何将连字符与正则表达式匹配?
连字符是正则表达式中的一个特殊字符,例如,要选择范围,我可以执行以下操作:
[0-9A-F]
Run Code Online (Sandbox Code Playgroud)
但是在方括号之外它只是一个普通的角色吗?我一对夫妇网上正则表达式测试仪进行了测试,连字符似乎充当方括号外的普通字符(甚至内方括号的,如果不是两个之间的字符 - 例如,[-g]似乎匹配 - 或g)是否逃脱.我找不到答案,但我想知道是否传统的逃避连字符.
谢谢!
Chr*_*son 254
各方面都要正确.在字符类之外(这就是所谓的"方括号"),连字符没有特殊含义,在字符类中,您可以将连字符作为范围中的第一个或最后一个字符(例如[-a-z]或[0-9-]),或者转义它(例如[a-z\-0-9])为了给你的班级添加"连字符".
在角色类中首先或最后找到一个连字符更为常见,但绝不会被大量愤怒的颈带私下用来选择逃避它.
(实际上......我的经验是,那些没有完全理解语法的人会使用很多正则表达式.在这些情况下,你通常会看到一切都被逃脱(例如[a-z\%\$\#\@\!\-\_])因为工程师不知道什么是"特别",什么不是......所以他们"安全地玩"并用过多的反斜杠模糊表达.你会花时间真正理解正则表达式,为自己,同时代人和后人做一件大事.使用它之前的语法.)
好问题!
rua*_*akh 13
在字符类之外,通常不要逃避连字符.如果我在角色类之外看到一个逃脱的连字符,那就告诉我它是由一个对正则表达式不太熟悉的人写的.
在内部角色类中,我认为一种方式不是传统方式而是另一种方式; 根据我的经验,通常似乎是放在第一个或最后一个,如在[-._:]或[._:-],以避免反斜杠; 但我也经常看到它,而不是逃脱,如[._\-:],我不认为这是联合国常规.