[^ /] + htaccess中的解释

时间:2012-02-13 09:32:35

标签: regex apache .htaccess mod-rewrite url-rewriting

我有这个htaccess代码

RewriteRule   ^/([uge])/([^/]+)$  /$1/$2/

但我真的不明白[^/]+做了什么? 我一直在谷歌搜索这段时间,但我无法得到我想要的东西。

5 个答案:

答案 0 :(得分:12)

这里有两个基本的正则表达式构造

角色等级

See character classes on regular-expressions.info

[...]是一个字符类,意味着这个构造匹配类中的一个字符(来自方括号内)。

你的课程以^开头,它赋予角色类特殊的含义,它是一个否定的角色类[^...]),意味着匹配任何不属于上课。

<强>量词

See quantifiers on regular-expressions.info

+是一个量词,意思是1或更多

正则表达式的含义

要了解这是做什么的,你还要考虑下一件事,最后是$。这是一个匹配字符串结尾的锚点。

See anchors on regular-expressions.info

所以([^/]+)$匹配字符串末尾不是斜杠的所有字符。

您还可以在这里找到basic tutorial

答案 1 :(得分:7)

[^/]表示任何不匹配/的字符。

答案 2 :(得分:3)

这意味着:

  

匹配1个或多个字符,直到找到正斜杠/

方括号[]在开始时有插入符号^的任何内容都有否定因此:

  

[^/]表示除/

之外的任何字符      

[^/]+表示除/

以外的1个或多个字符

答案 3 :(得分:3)

[any_character]是一个字符类或字符集charclass Ref[^any_character]是一个否定的字符类或字符集charclass negated Ref

来自Anchors Ref

  

记住^也有以下含义:插入符号^匹配字符串中第一个字符(锚点)之前的位置,而不是在Character类中使用。

来自charclass Ref: Metacharacters Inside Character Classes

  

请注意,字符类中唯一的特殊字符或元字符是右括号(]),反斜杠(),插入符号(^)和连字符( - )。通常的元字符是字符类中的普通字符,不需要通过反斜杠进行转义。要搜索星号或加号,请使用[+ *]。如果你逃避字符类中的常规元字符,你的正则表达式将正常工作,但这样做会大大降低可读性。

来自Repitition Ref
+表示一个或多个字符。

所以,[^/]+

表示匹配/以外的任何字符。因此,它会匹配,直到遇到/


^/([uge])/([^/]+)$

  
      
  • 字符串应以 /
  • 开头   
  • 后跟字符 u g e
  •   
  • 后跟 /
  •   
  • 跟随并以 /
  • 以外的任何字符结束   

()(圆括号)用于:圆形括号创建反向引用Ref

答案 4 :(得分:2)

表达式[^/]匹配任何不是/的字符,而量子+表示量子左边的表达式必须出现在leat一次。