正则表达式(一) -- 元字符(转)

正则表达式括号的作用
1、限制多选项的范围 (Fri|1)st 这样写会匹配Frist或1st 如果去掉,则 Fri|1st就是匹配 Fri或1st
2、将若干个字符进行组合,受量词的同时作用。例如 th+ 表示匹配 th thh thhh(h无数次),如果是(th)+,则匹配的是th thth ththth(th无数次)
3、反向引用,即前面括号匹配到的东西记忆与后面,常用于匹配重复单词。
4、分组

常用元字符
代码           说明
.             匹配除换行符以外的任意字符
\w             匹配字母或数字或下划线或汉字
\s             匹配任意的空白符
\d             匹配数字
\b             匹配单词的开始或结束
^             匹配行的开始
$             匹配行的结束

常用反义元字符
代码   说明
\W       匹配任意不是字母,数字,下划线,汉字的字符
\S        匹配任意不是空白符的字符
\D      匹配任意非数字的字符
\B        匹配不是单词开头或结束的位置
[^x]       匹配除了x以外的任意字符
[^aeiou]   匹配除了aeiou这几个字母以外的任意字符

常用重复限定符
代码       说明
*         重复零次或更多次
+         重复一次或更多次
?         重复零次或一次
{n}       重复n次
{n,}        重复n次或更多次
{n,m}       重复n到m次

正则表达式之元字符

 一、最易理解的元字符。

  脱字符  ^   :表示匹配行首的文本

   美元符  $ :表示匹配行尾的文本

  例如:

^cat    //匹配以c作为一行的第一个字符是c,然后是一个a,紧接着一个t的文本

  以上正则表达式匹配的是:

  例如一个行  catdogcat  上面正则表达式匹配第一个cat。

  特殊正则说明:

^cat$    //匹配行开头是cat,然后就是行末尾的cat,说白了就是一行中仅仅只包含cat的行,没有其他字符。

^$        //匹配行开头,然后就是行末尾了,说白了就是匹配一个空行(没有任何字符,也没有空白字符)

^          //匹配行的开头,每一行都匹配

二、字符组

  匹配若干字符之一

[]    //字符串用中括号括起来,表示匹配其中的任一字符,相当于或的意思

  例如:

gr[ea]y    //匹配grey或gray

  其中连字符 - 表示一个范围,例如<h[1-6]> 与 <h[123456]>的作用一致。其他类似的还有[a-z],[A-Z]。

  这里必须要注意的是只有在字符组内部连字符 - 才是元字符,否则它就只匹配普通的连字符 - 。

三、排除型字符组

  用[^...]取代[...]这个字符组就会匹配任何未列出的字符。

[^...]    //[^...]表示匹配所有方括号里未列出的字符

  例如:

r[^abc]r  //匹配出rar,rbr,rcr之外的任意r*r文本

  下面的例子要注意下,例如正则表达式  q[^u] 不会匹配 Qantas 和 Iraq 这又是为什么呢?

  因为正则表达式是区分大小写的。其次q[^u]要求q后面跟一个非u的字符,即必须包含一个字符。

  在特别强调,排除型字符组表示“匹配一个未列出的字符”而不是“不要匹配列出的字符”。区别在于前者必须要匹配一个。

  另外还要强调一点,在[]里面是没有元字符的,都代表本身的含义,例如[.]就表示匹配一个点.的意思。

四、点号.匹配任意字符  

  元字符.是用来匹配任意字符的字符组的渐变写法。

  .    //匹配任意字符的字符组简便写法

  例如:

  .a    //匹配 Aa 1a ga 等等

五、多选结构

  | 是一个非常简捷的元字符,它的意思是。依靠它,我们能够把不同的子表达式组合成一个总的表达式,而这个总表达式又能够匹配任意的子表达式。

|    //或 多选分支    选择两者中的一个    注意|将左右两边分为两部分,而不管左右两边有多长多乱

  例如:

gray|grey    //既可匹配gray又可匹配grey    相当于gr[ae]y

  如果将|写在中括号[]里面,那么 | 就不是元字符,它和a e一样,只代表本身字符。

  对于表达式gr(a|e)来说,括号是必须的,如果没有括号,那么gra|ey的意思就成了 gra | ea 即匹配gry或匹配ey。

  再比如 Frist|1st  与  (Fri|1)st  表示的是同一个意思

  另外要特别注意下,下面的这个例子

  ^from|subject|date:  与  ^(from|subject|date):  之间的区别

  对于前者:只能匹配 ^from 或 subject 或 date:

  对于后者: 能够匹配 ^from: 或 ^subject: 或 ^date:

六、忽略大小写

  当然忽略大小写你可以用 [Aa]bc  取代  abc  ,但是这样不方便。正则表达式提供一个  -i  。用于忽略大小写匹配。

  -i    //用于忽略大小写匹配

七、单词分界符

  \b  表示单词分界符

\b  //匹配单词的开始或结束

八、可选项元素

  ?  代表可选项,把他加在一个字符的后面,就表示此处容许出现这个字符,不过它的出现并非匹配成功的必要条件。

?    //跟在一个字符后面,容许此字符出现0次或1次

  例如:

colou?r    //可以匹配colour或color

  然后来说一下结合其他元字符使用的情况:

  例如:

  July|Jul  可缩短为  July?

  4th|4    可缩短为  4(th)?

九、重复出现

  加号+和星号*的作用与问号类似,的作用都是限定字符出现的次数。因此问号?加号+星号*这3个元字符统称量词。

?     //可以出现0次或1次
+    //至少要出现1次,可以出现无数次
*    //可以出现0次或出现无数次

十、规定重现次数的范围:区间

  {min,max}  大括号内的数字用于表示某字符允许出现的次数区间。

{min,max}  //大括号内的数字用于表示某字符允许出现的次数区间。

  这里要记住,{}里面的参数不一定要写全两个,也可以仅仅写一个,这样代表仅仅匹配指定的字符数,例如\b{6}\b匹配刚刚6个字母的单词。

  {n,}  匹配n次或更多次,  {5,}  匹配5次以上

十一、括号以及反向引用

  前面已经说过括号的两个作用:限制多选项的范围,将若干字符组合为一个单元,受问号或星号之类的量词作用。现在在来说一种括号的用法,分组,此东西具有记忆的功能,即在正则表达式内部仍然能够回忆上次匹配到的是什么。这个东西用语言说不明白,书本上又是画图又是线的,这里仅仅用一个例子:

  例子解析:首先说明一下括号里面代表什么意思,

  (\b[A-Za-z]+ +)  匹配单词的开始,然后是大小写字母至少1次,然后空格至少1次。说白了就是 空格然后是匹配不区分大小写的一寸字母然后是任意个空格    OK,再来说下\1\b  \b当然就是单词的结尾了,那么\1呢?这个就是分组的作用了,\1代表的就是前面括号里面的东西,也就是一个单词。

  因此,整个正则表达式的意思是,匹配间隔了N个空格的重复的单词。不懂也没办法了。

十二、神奇的转义

   \ 转义符它的作用是使元字符失去它的意义,仅仅代表其日常输入中字符的意义。

  例如,我要匹配字符 . 字符*  就需要在前面加反斜杠,\.  \*去除它元字符的含义。

  一些需要转义的字符列表    \ * + ? | { [ ( ) ^ $ . # 和 空白

十三、一些其他的元字符

  \w  匹配字母,汉字,数字,下划线

  \W  匹配非字母,非汉字,非数字,非下划线

  \s   匹配空白符

  \S  匹配非空白符

  \d  匹配数字

  \D  匹配非数字

来源: <http://www.cnblogs.com/kissdodog/archive/2013/04/22/3036649.html>

时间: 2024-10-13 22:00:16

正则表达式(一) -- 元字符(转)的相关文章

正则表达式的元字符

利用Perl正则表达式还可以做另一件有用的事情,这就是使用各种元字符来搜索匹配.所谓元字符,就是用于构建正则表达式的具有特殊含义的字符,例如的“*”.“+”.“?”等.在一个正则表达式中,元字符不能单独出现,它必须是用来修饰原子的.如果要在正则表达式中包含元字符本身,使其失去特殊的含义,则必须在前面加上“\”进行转义.正则表达式的元字符如下表所示. 构造正则表达式的方法和创建数学表达式的方法相似,就是用多种元素符与操作符将小的表达式结合在一起来创建更大的表达式.正则表达式的组件可以是单个的字符.

糯米丸&“坑叫兽”之正则表达式及元字符使用 &#160;

在介绍正则表达式之前,我们先普及一下,Linux系统下三大文本搜索工具grep.sed.awk.它们各自的作用如下: grep:grep(支持正则表达式) egrep(支持扩展表达式), fgrep(快捷搜索不支持正则表达      式):文本搜索工具:基于一组筛选条件对给定文本进行搜索操作: sed:Stream EDitor,流编辑器,行编辑工具:文本编辑工具:(本质是编辑器) awk:GNU awk,文本格式化工具:文本报告生成器:(文本美化器,可以理解为文字版的美图秀秀)  正则表达式:

正则表达式 \D 元字符

\D元字符可以匹配非数字字符,等价于"[^0-9]". 语法结构: (1).构造函数方式: new RegExp("\\D") (2).对象直接量方式: /\D/ 浏览器支持: (1).IE浏览器支持此方法. (2).火狐浏览器支持此方法. (3).谷歌浏览器支持此方法. (4).opera浏览器支持此方法. (5).safria浏览器支持此方法. 实例代码: var str="I love antzone \n and you 360"; va

正则表达式:元字符(基本可用来匹配的字符)

# 1: 匹配单个字符与数字 . 匹配除换行符以外的任意字符 [0123456789] 是字符集合,表示匹配方括号中所包含的任意一个字符 如[Mia] 匹配'M','i','a'中任意一个字符 [a-z] 匹配任意小写字母 [A-Z] 匹配任意大写字母 [0-9] 匹配任意数字,类似[0123456789] [0-9a-zA-z] 匹配任意的数字和字母,(不分大小写)(不能加空格,否则也匹配空格) [[0-9a-zA-z_] 匹配任意的数字.字母和下划线 [^Mia] 匹配除了'M','i','

常用的操作正则表达式的方法+正则表达式基本元字符使用实例

常用的操作正则表达式的方法: 下面学习一下位于System.Text.RegularExpressions下的Regex类的一些静态方法和委托(只要有一段匹配就会返回true) 1,静态方法IsMatch (返回值是一个布尔类型,用于判断指定的字符串是否与正则表达式字符串匹配,它有三个重载方法) bool IsMatch(string input, string pattern); 参数: input: 要搜索匹配项的字符串. pattern: 要匹配的正则表达式模式. 返回结果: 如果正则表达

Linux正则表达式-定位元字符

有两个元字符用于指定字符串出现在行首或行末.脱字符(^)是指示开始的单字符正则表达式.美元符号($)是指示行结尾的单字符的正则表达式.这些通常称为"定位符",因为它们将匹配限定在特定位置.例如,可以使用以下表达式打印以First开始的行: ^First 没有^元字符,这个表达式将打印包含First的任意行. 通常,使用VI输入要由troff处理的文本,并且不想让空格出现在行的结尾.如果想找到(并删除)它们,下面的正则表达式可以匹配在结尾处有一个或多个空格的行: □□*$ Troff请求

正则表达式所有元字符及特殊字符

字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 后向引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 "\" 而 "\(" 则匹配 "(". ^ 匹配输入字符串的开始位置.如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置. $ 匹配输入字符串的结束位置.如果设置了RegExp 对象的 Mul

正则表达式之元字符

1.什么是正则表达式? 官方解释正则表达式是描述一组字符串的模式,正则表达式类似算数表达式构造,通过使用各种特殊符号组合来表示一组字符串. 2.元字符 元字符 描述 示例 . 匹配任意单个字符 a.:匹配a开头任意字符结尾 * 匹配紧挨在前面的字符任意次(0,1或无限次) a*:匹配a多次 .* 匹配任意长度的任意字符 a.*:a开始任意长度的行 ^ 行首定位符 ^root:root开头的行 $ 行尾定位符 root$:root结尾的行 [] 匹配指定范围内的任意单个字符 [abc]:匹配a或b

正则表达式三-元字符

元字符 元字符(Metacharacter)是拥有特殊含义的字符: 元字符 描述 . 查找单个字符,除了换行和行结束符. \w 查找单词字符. \W 查找非单词字符. \d 查找数字. \D 查找非数字字符. \s 查找空白字符. \S 查找非空白字符. \b 查找位于单词的开头或结尾的匹配. \B 查找不处在单词的开头或结尾的匹配. \0 查找 NUL 字符. \n 查找换行符. \f 查找换页符. \r 查找回车符. \t 查找制表符. \v 查找垂直制表符. \xxx 查找以八进制数 xx