文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>正则表达式元字符和格式

正则表达式元字符和格式

时间:2008-05-17  来源:poplar.xu


在上一节里我们用一个例子介绍了什么是正则表达式的“元字符”。其实,元字符是一个或一组代替个或多个字符的字符。听起来有点拗口,但举一个例子也许你就明白了:元字符*用来匹配一个或多个的前一字符;而元字符 . 用来匹配一个任意的一个字符。正则表达式也可以不使用任何的元字符,一个简单的字符串 /piano/ (在Unix里正则表达式通常用一对斜线作为分隔符,后文在“正则表达式格式”部分中有介绍)也是一个正则表达式,只不过是准确匹配罢了。

下面列出了常用的正则表达式元字符,下一节将以实例的形式逐个介绍这些元字符的用法。需要注意的是,这些元字符并不是在所有的Unix (或Linux) 工具中都可以用,至于某个应用程序支持哪些元字符,可以参照该工具的用户手册。

 

表2.1 正则表达式元字符

 

元字符

功能

示例

匹配结果

^

行首定位符

/^supinfo/

匹配所有以supinfo开头的行

 

$

行尾定位符

/supinfo$/

匹配所有以supinfo结尾的行

 

\<

词首定位符

/\<supinfo/

匹配出现以supinfo为开头的词的行

 

\>

词尾定位符

/supinfo\>/

匹配出现以supinfo为结尾的词的行

 

.

匹配一个字符

/su…fo/

包含su,后面紧跟三个任意字符,然后紧跟着fo的行

 

*

匹配0个或多个前一字符

/_*supinfo/

supinfo前有0个或多个下划线的行

 

[]

匹配一组字符里的任意字符

 

/[Ss]pinfo/

包含Supinfo或supinfo的行

[x-y]

匹配指定范围内的字符

/[A-Z0-9]supinfo/

supinfo之前有一个A到Z或0到9的字符

 

[^ ]

匹配不在指定范围内的字符

/[^A-Z0-9]supinfo/

supinfo之前有一个既不是A到Z又不是0到9的字符

 

x\{m\}

x\{m,\}

x\{m, n\}

根据字符x出现的次数匹配:

m次;大于等于m次;大于等于m次但小于等于n次

 

/s\{2,5\}/

匹配有2到5个连续出现的s的行

\

转义元字符

/supinfo\. /

匹配包含supinfo,然后后面紧跟一个句点的行(没有 \ 的时候是匹配一个字符)

 

\(…\)

创建一个字符标签

/(SUPINFO):use \1NE/

括号中的字符被保存在标号为1的标签里,以后可以用\1来引用。标签编号从左到右依次为1,2,3……最多可以有9个标签。这个例子查找的是SUPINFO:后面跟着一个 use SUPINFONE的字符串

 

还有一点问题需要在这里提出,正则表达式有很多版本——至少存在两个版本:基本正则表达式和扩展正则表达式。在基本正则表达式中,原字符 | ,+ 和 ? 是不允许使用的。并且在使用含有圆括号和花括号的正则表达式时,圆括号和花括号都要用反斜线转义。在书写正则表达式时,比较好的做法是先写出整个正则表达式,然后再用反斜线将需要转义的字符转义。

正则表达式的格式

在Unix 中,正则表达式是被包含在一对斜线中的,斜线之间包含要匹配的字符(模式)。下面是几个例子:

/piano/ /[Pp]iano/            /*pinfo/               /s\{2,5\}oho/

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载