/\/\*[ \t]*\./ /import/i /[ \t\w\/\.\=\-;\[\]\$>"']+\*\/[ \t]*[\n\r]{1,2}/
在上面的正则表达式中,我不知道[ \t\w\/\.\=\-;\[\]\$>"']+
代表什么类型的数据语法。
有人能举个例子来解释一下吗?
[ \t\w\/\.\=\-;\[\]\$>"']+
任意一个字符:
' '
(空格)、\t
(制表符)a-z
、A-Z
、0-9
、_
)\/
、\.
、\=
、\-
、;
、\[
、\]
、\$
、>
、"
、'
\
) 进行转义。因此,如果您想在正则表达式中将这些字符用作字面值,则需要使用反斜杠进行转义。^]\-
并在字符类之外转义这些:
^.*+?$|()[{\
[ \t\w\/.=;[\]$>"'-]+
在字符类外部,一些字符(如"$"、"*"、"?"、"+")除了作为普通字符之外,还有其他的作用。所以,当你想要指定一个加号符号时,你需要使用"+"进行转义,因为否则它的常见角色将是表示"前一个字符出现一次或多次"。 然而,在字符类内部,一些字符始终被用作普通字符,所以它们不需要进行转义。因此,例如,在字符类中,你不需要使用\= * + \?,只需要使用= * + ?。 然而,在字符类内部,你需要转义一些字符,如"]",否则它将被视为字符类的结束。 你还需要转义字符"-",否则它将不被视为简单的破折号,而是会创建前一个字符和后一个字符之间的范围。 另一种方法是始终将"-"字符放置在字符类的第一个或最后一个字符位置,这种情况下它不需要被转义。
看起来可能很复杂,但实际上并不是。 你需要逻辑思考。如果在字符类中出现“+”字符而不进行转义会发生什么?它是否意味着前一个字符可能出现一次或多次?在字符类中这样的事情没有任何意义,所以你不需要对其进行转义。等号“=”在字符类内外都没有特殊作用,因此你也不需要对其进行转义。 简单的点号“.”在字符类外表示任何字符但不包括\n(除非使用/s修饰符),但在字符类中其常见含义是作为一个简单的点号(.),因此你也不需要对其进行转义。 这些并不是关于所有字符的常见和特殊含义的所有细节,但我只是举了这些例子来说明转义的含义。
[ \t\w\[\]/.=;$>"'-]+
。 - Robin\$>
匹配字面上的$>
以及其他字符和类。 - mpapec