igozhang

——

    正则表达式,regular_expression

    nginx常用正则
    ^ :匹配输入字符串的起始位置
    $ :匹配输入字符串的结束位置
    * :匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”
    + :匹配前面的字符一次或多次。如“ol+”能匹配“ol”及“oll”、“olll”,但不能匹配“o”
    ? :匹配前面的字符零次或一次,例如“do(es)?”能匹配“do”或者“does”,”?”等效于”{0,1}”
    . :匹配除“\n”之外的任何单个字符,若要匹配包括“\n”在内的任意字符,请使用诸如“[.\n]”之类的模式
    \ :将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符,而“\$”则匹配“$”
    \d :匹配纯数字
    {n} :重复 n 次
    {n,} :重复 n 次或更多次
    {n,m} :重复 n 到 m 次
    [] :定义匹配的字符范围
    [c] :匹配单个字符 c
    [a-z] :匹配 a-z 小写字母的任意一个
    [a-zA-Z0-9] :匹配所有大小写字母或数字
    () :表达式的开始和结束位置
    | :或运算符
    
    精准匹配:location = / {}
    一般匹配:location / {}
    正则匹配:location ~ / {}
    示例:
    (1)location = / {}
    =为精确匹配 / ,主机名后面不能带任何字符串,比如访问 / 和 /data,则 / 匹配,/data 不匹配
    再比如 location = /abc,则只匹配/abc ,/abc/或 /abcd不匹配。若 location  /abc,则即匹配/abc 、/abcd/ 同时也匹配 /abc/。
    
    (2)location / {}
    因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 比如访问 / 和 /data, 则 / 匹配, /data 也匹配,
    但若后面是正则表达式会和最长字符串优先匹配(最长匹配)
    
    (3)location /documents/ {}
    匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索其它 location
    只有其它 location后面的正则表达式没有匹配到时,才会采用这一条
    
    https://blog.51cto.com/u_15057813/4116700
    

    MP3