使用$>正则表达式符号

时间:2014-05-20 07:36:09

标签: regex perl

/\/\*[ \t]*\./ /import/i /[ \t\w\/\.\=\-;\[\]\$>"']+\*\/[ \t]*[\n\r]{1,2}/

在上面的正则表达式中,我不知道[ \t\w\/\.\=\-;\[\]\$>"']+的含义 它将处理哪种类型的数据语法 任何人都可以用示例数据向我解释一下吗?

2 个答案:

答案 0 :(得分:4)

您的角色位于Character Class内,这意味着......

[ \t\w\/\.\=\-;\[\]\$>"']+     

任何角色:

  • ' '\t(标签)
  • 字符(a-zA-Z0-9_
  • \/\.\=\-;\[\]\$>"'
  • 1更多次)

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

对于 PCRE 以及大多数其他与Perl兼容的版本,请在字符类中转义:

^]\-

在角色类之外逃避这些:

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

注意:如果连字符被认为是字符类内部的第一个最后字符,则不一定需要进行转义。< / p>


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

[ \t\w\/.=;[\]$>"'-]+

答案 1 :(得分:0)

逃避角色意味着不使用其共同角色,而是使用其特殊角色(如果有角色)。 例如,字母“w”的共同角色是字符类内部或外部的简单字符“w”。 如果字符“w”通过在其前面放置\字符来转义,则\ w将具有特殊角色,并且表示字符类内部或外部的任何“单词”字符(字母,数字和_字符)。 字符“]”的共同角色不是简单字符“]”,但它具有结束字符类的作用。 如果通过在它之前放置一个\来转义字符“]”,那么]将具有一个特殊的角色,这意味着这一次在字符类内部或外部是一个简单的“]”字符。

在字符类之外,某些字符如“$”,“*”,“?”,“+”比其简单字符值具有另一个角色,因此当您要指定加号符号时,您需要使用+来逃避它,因为否则它的共同作用将是“前一个字符一次或多次”。 但是,在字符类中,某些字符始终用作公共字符,因此不需要对其进行转义。例如,您不需要使用\ = * + \?在一个字符类中,但只有= * +? 在一个字符类中,你需要转义一些字符,如“]”,否则它将意味着字符类的结束。 您还需要转义字符“ - ”,否则它不会被视为简单的破折号,但它会在前一个和下一个字符之间创建一个范围。 另一种方法是始终将“ - ”字符作为字符类中的第一个或最后一个字符,在这种情况下,它不需要进行转义。

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