Nginx的正则表达式详解

  

Nginx引擎(x)是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

  

其将源代码以类BSD许可证的形式发布,因它的稳定性,丰富的功能集,示例配置文件和低系统资源的消耗而闻名.2011年6月1日,nginx 1.0.4发布。

  

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用Nginx网站用户有:百度,京东,新浪,网,易腾讯,淘宝等。

  

而我们今天来聊一聊他的正则表达式的使用规则,我会简单的举几个例子然后进行说明讲解。

  

  

正则表达式,又称规则表达式。(英语:正则表达式,在代码中常简写为正则表达式,正则表达式或重新),计算机科学的一个概念。正则表达式通常被用来检索,替换那些符合某个模式(规则)的文本。

  

许多程序设计语言都支持利用正则表达式进行字符串操作,例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“正则表达式”,单数有regexp,正则表达式,复数有regexp, regex regexen。

  

正则表达式由一些普通字符和一些元字符(元字符)组成。普通字符包括大小写的字母和数字,而元字符则具有特殊的含义,我们下面会给予解释。

  

在最简单的情况下,一个正则表达式看上去就是一个普通的查找串,例如,正则表达式“测试”中没有包含任何元字符,它可以匹配“测试”和“testing123”等字符串,但是不能匹配“测试”

。   

要想真正的用好正则表达式,正确的理解元字符是最重要的事情。下表列出了所有的元字符和对它们的一个简短的描述。
  

  

              

元字符         

描述               

\

        

将下一个字符标记符,或一个向后引用,或一个八进制转义符。例如," \ \ n "匹配。\ n \ n”匹配换行符。序列“\ \”匹配而“\ \(”则匹配”(”。即相当于多种编程语言中都有的“转义字符”的概念。

              

^         

匹配输入字行首。如果设置了正则表达式对象的多行属性,^也匹配“\ n”或“\ r”之后的位置。

              

美元         

匹配输入行尾。如果设置了正则表达式对象的多行属性,美元也匹配“\ n”或“\ r”之前的位置。

              

*         

匹配前面的子表达式任意次。例如,佐薇*能匹配“z”,也能匹配以“佐薇”及“动物园”。*等价于{0}。

              +

        

匹配前面的子表达式一次或多次(大于等于1次),例如,“佐薇+”能匹配以“佐薇”及“动物园”,但不能匹配“z”。+等价于{1,}。

              

& # 63;

        

匹配前面的子表达式零次或一次。例如,“做(es) & # 63;可以匹配“做”或“不”强生的# 63;等价于{0,1}。

              

{n}         

n是一个非负整数。匹配确定的n次,例如,“{2}”不能匹配“Bob”中的“o”,但是能匹配“食物”中的两个o。

              

{n}

        

n是一个非负整数。至少匹配n次,例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。”o{1,}”等价于“o +”。“{0}”则等价于“o *”

。               

{n, m}

        

m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次,例如,“o{1,3}”将匹配中“fooooood”的前三个o为一组,后三个o为一组。”o{0,1}”等价于“o # 63;”。请注意在逗号和两个数之间不能有空格。

              

& # 63;

        

当该字符紧跟在任何一个其他限制符(& # 63;*,+,{n}, {n}, {n, m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少地匹配所搜索的字符串,而默认的贪婪模式则尽可能多地匹配所搜索的字符串,例如,对于字符串“呜”,“o +”将尽可能多地匹配“o”,得到结果(“呜”),而“o + & # 63;”将尽可能少地匹配“o”,得到结果[' o ', ' o ', ' o ', ' o ']

Nginx的正则表达式详解