Regex 带有$>;符号

Regex 带有$>;符号,regex,perl,Regex,Perl,在上面的正则表达式中,我不知道“']+ 它将处理哪种类型的数据语法。 谁能给我举个例子解释一下吗?你的字符在a中,意思是 /\/\*[ \t]*\./ /import/i /[ \t\w\/\.\=\-;\[\]\$>"']+\*\/[ \t]*[\n\r]{1,2}/ 以下任何特征: ”,\t(选项卡) 单词字符(a-z,a-z,0-9,) \/,\.,\=,-,,\[,\],\$,,“,,,” (1或更多次) 在正则表达式中,可以通过在字符前面加反斜杠(\)来转义将被逐字解释而

在上面的正则表达式中,我不知道“']+ 它将处理哪种类型的数据语法。

谁能给我举个例子解释一下吗?

你的字符在a中,意思是

/\/\*[ \t]*\./ /import/i /[ \t\w\/\.\=\-;\[\]\$>"']+\*\/[ \t]*[\n\r]{1,2}/
以下任何特征:

  • \t
    (选项卡)
  • 单词字符(
    a-z
    a-z
    0-9
  • \/
    \.
    \=
    -
    \[
    \]
    \$
  • 1
    更多次)

在正则表达式中,可以通过在字符前面加反斜杠(
\
)来转义将被逐字解释而不是元字符的字符。因此,如果要将这些字符中的任何一个用作正则表达式中的文字,则需要使用反斜杠对其进行转义

对于,以及大多数其他与Perl兼容的风格,在字符类内部转义这些:

[ \t\w\/\.\=\-;\[\]\$>"']+     
^]\-
并在角色类之外转义这些:

[ \t\w\/\.\=\-;\[\]\$>"']+     
^]\-
注意:如果连字符被视为字符类中范围的第一个或最后一个字符,则不一定需要转义


所以基本上,这可以简化为以下内容

^.*+?$|()[{\

转义字符意味着不使用其公共角色,而是使用其特殊角色(如果有)。 例如,字母“w”的常见角色是字符类内部或外部的简单字符“w”。 如果字符“w”通过在其前面放置\字符进行转义,\w将具有特殊角色,并表示字符类内部或外部的任何“单词”字符(字母、数字和\字符)。 字符“]”的常用角色不是简单的字符“]”,但它具有结束字符类的角色。 如果字符“]”通过在其前面放置\进行转义,则“]”将具有特殊角色,这意味着这一次将是字符类内部或外部的简单“]”字符

在字符类之外,某些字符(如“$”、“*”、“?”、“+”等)的角色不同于其简单的字符值,因此,当您想指定加号符号时,需要使用+对其进行转义,因为否则其常见角色将表示“前一个字符一次或多次”。 但是,在字符类中,某些字符始终用作普通字符,因此它们不需要转义。例如,您不需要使用\=*+\?在字符类内,但仅=*+?。 在字符类中,您需要转义一些字符,例如“]”,否则它将意味着字符类的结束。 您还需要转义字符“-”,因为否则它将不会被视为简单的破折号,但它将在上一个字符和下一个字符之间创建一个范围。 另一种方法是始终将“-”字符作为character类中的第一个或最后一个字符,在这种情况下,不需要对其进行转义

这看起来可能很复杂,但事实并非如此。 你需要有逻辑地思考。如果“+”字符出现在字符类中时不转义,会发生什么?这是否意味着前一个字符可能出现一次或多次?在角色类中,这样的事情没有任何意义,所以你不需要逃避它。“=”角色在角色类内部或外部没有任何特殊角色,因此您也不需要转义它。 字符类外的简单点“.”表示任何字符,但除非使用/s修饰符,否则不表示任何字符,\n但在字符类中,其常见含义是充当简单点(.),因此也不需要转义。
这些并不是关于所有字符的常见和特殊含义的全部细节,但我只是举例说明转义的含义。

这是一个,顺便说一句,它可以简化为
[\t\w\[\]/.=;$>“-]+
\$>
与literal
$>
以及其他字符和类匹配。我是regex新手。请清楚解释字符类内部或外部转义字符的含义。提前感谢