又一篇正则表达式学习笔记

1. \b:表示单词的开头或者结尾,可能是空格、标点符号或者换行,但是\b不匹配其中的任何一个,这是指代这些元素中的任一个位置。
示例:\bhi\b:查找文本中所有的“hi”单词,但是不包括him、history等字样
1.1 ^:匹配字符串的开始,特指一个段落的起始。
1.2 $:匹配字符串的结束。特指一个段落的结尾,这两个都是\b的子集。
重复:
2. *:表示*前面的内容重复出现任意多次,".*"连在一起就表示任意数量的不包含换行符的字符。
示例:\bhi\b.*\bLucy\b:先是一个hi,然后任意多个字符(但不能有回车),最后是一个单独的单词Lucy。
2.1 +:同样表示数量,但是+必须是1次或以上,不包括0次,而*是指任意数量,包括0次重复。
2.2 {n}:数量控制,前方的字符精确重复n次。
2.3 {n,m}:数量控制,前方的字符重复n到m次,n<=m。
2.4 ?:重复0次或1次。
3. .: 表示任意字符,不包含回车换行。
4. \d:匹配任意的数字(0,1,2……9)
示例:0\d\d-\d{7}:查找以0开头,后两个是数字,然后是一个连字符"-",接着是7个数字的字符串,如:025-8224110。
5. \s:匹配任意的空白符,包括空格、制表符(tab键)、换行符、中文全角空格等。
6. \w:匹配字母、数字、下划等。
示例1:\ba\w*\b:匹配以字母"a"开头,然后是任意多个任意字符不包括空格等空白符,然后一个单词结束符。其意义就是以a开头的所有单词。
示例2:\b\w{6}\b:匹配正好是6个字符长度的单词。
7. []:任意匹配一个方括号中存在的字符。
示例:[abc]\w{4}\b:以a、b、c中的任意一个字符为开头,后面有4个字母的单词。
反义
8. \D \S \W \B 这些元字符的大写形式分别表示他们表示的集合的反义。
示例:\D:表示不是数字的所有字符,如:abced
8.1 [^x]:表示不是x字符的所有字符
8.2 [^xyz]:表示不是x、y、z中任一种的字符
9.替换
"|":使用"|"符号可以实现逻辑或运算,配合小括号"()"的使用,可以实现不同条件的或运算。
10分组
"()":用括号包围住已经实现的表达式,可以方便的继续使用重复、替换等操作。
示例:\b(\w+\b\s+)\1+\b:将第一次出现的括号表达式用\1表示,可以匹配go go go
自学到这里已经非常不错了,下面继续研究正则表达式的高级属性
断言:
(?=express)这是一种假定条件,可以放在表达式的后方,已验证前方的字符后面的表达式是否为express,但是并不包含后方的express。
示例:\b\w*(?=ing\b):取得后缀为ing的所有单词的前缀。
(?<=express)前置断言,放于表达式首部,已验证字符串前方的表达式是否符合express,同样也不包含express本身。
示例:(?<=\bre)\w*\b:取得所有前缀为re的单词的后面部分
注释:
(?#)以这种形式来注释正则表达式。
示例:2[0-4]\d(?#200-249)
懒惰模式匹配
*:匹配最多的字符
*?:匹配最少的字符

(0)

相关推荐

  • 又一篇正则表达式学习笔记

    1. \b:表示单词的开头或者结尾,可能是空格.标点符号或者换行,但是\b不匹配其中的任何一个,这是指代这些元素中的任一个位置. 示例:\bhi\b:查找文本中所有的"hi"单词,但是不包括him.history等字样 1.1 ^:匹配字符串的开始,特指一个段落的起始. 1.2 $:匹配字符串的结束.特指一个段落的结尾,这两个都是\b的子集. 重复: 2. *:表示*前面的内容重复出现任意多次,".*"连在一起就表示任意数量的不包含换行符的字符. 示例:\bhi\b

  • Java中@Pattern注解常用的校验正则表达式学习笔记

    目录 1. 前端传参要求 2.其他常用正则表达式 2.1 数字校验 2.2 字符串校验 2.3 月份时间校验 2.4 Email校验 2.5 汉字校验 2.5 联系电话校验 2.5 密码校验 总结 1. 前端传参要求 项目开发中经常会遇到对用户输入内容的限制,本篇对常用限制做一总结.如下图所示,标识字段有严格命名限制,用户输入校验这部分工作前端可以做,当然后端也可以通过在实体类中添加注解的方式实现参数校验.其底层原理还是拦截器拦截请求,对带有相关注解的属性字段进行处理(非空.大小.长度.内容等判

  • 正则表达式学习笔记

    正则表达式学习笔记 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含  有某种子串.将匹配的子串做替换或者从某个串中取出符合某个条件的子串等. 列目录时, dir *.txt或ls *.txt中的*.txt就不是一个正则表达式,因为这里*与正则式的*  的含义是不同的. 为便于理解和记忆,先从一些概念入手,所有特殊字符或字符组合有一个总表在后面,最后一  些例子供理解相应的概念. 正则表达式 是由普通字符(例如字符 a 到 z)以及特殊字符(

  • js正则表达式学习笔记

    正则表达式:对字符串中的信息实现查找.替换和提取操作.(不支持注释和空白,必须写在一行内) 正则表达式的创建:包含在一对斜杠之间的字符(直接量语法) 例如: var pattern = /s$/; // 创建一个正则来匹配所有以字母s结尾的字符串,并赋值给pattern 一 .字符类 将直接量字符单独放进方括号内就组成了字符类. 一个字符类可以匹配它所包含的任意字符. 正则表达式的字符类: [...]      方括号内的任意字符 [^...]    不在方括号内的任意字符 .         

  • php正则表达式学习笔记

    php正则表达式学习笔记分享: 1.创建正则表达式 $regex = '/\d/i'; 与JavaScript中的第一个方式有点像,只是这里的话是个字符串.  2.正则表达式中的特殊字符 特殊字符有:   . \ + * ? [ ^ ] $ ( ) { } = ! < > | : - 3.正则表达式中的函数 有8个方法,preg_match与preg_match_all,preg_replace与preg_replace_callback,preg_grep.preg_split.preg_l

  • java正则表达式学习笔记之命名捕获

    很多正则引擎都支持命名分组,java是在java7中才引入这个特性,语法与.Net类似(.Net允许同一表达式出现名字相同的分组,java不允许). 命名分组很好理解,就是给分组进行命名.下面简单演示一下java中如何使用以及注意事项. 1.正则中定义名为NAME的分组 (?<NAME>X) 这里X为我们要匹配的内容,注意,在这个命名不能重复,名字也不能以数字开头! 2.反向引用NAME组所匹配到的内容 \k<NAME> 注意,反向引用是针对组所匹配到的内容,而非组的表达式. 3.

  • Shell正则表达式学习笔记

    正规表示法(或称为常规表示法)是透过一些特殊字符的排列,用以搜寻/取代/删除一列或多列文字字符串, 简单的说,正规表示法就是用在字符串的处理上面的一项『表示式』.正规表示法并不是一个工具程序, 而是一个字符串处理的标准依据,如果您想要以正规表示法的方式处理字符串,就得要使用支持正规表示法的工具程序才行, 这类的工具程序很多,例如 vi, sed, awk 等等. 一.正则表达式是什么? 正则表达式是用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分割.匹配.查找及替换操作. 二.

  • 比较实用的正则表达式学习笔记

    //匹配文本,这个偶尔比较好用,但是要小心字符中包含\E $str = '[a-z]'; $str = preg_replace('/\G[a-z]\E/', '', $str); echo $str; //打印空,全被替换掉了,相关大概就是preg_quote功能 //给匹配结果命名,这样在匹配结果中就可以用这个名称来获取值 $str = 'abc123abc'; preg_match('/(?P<num>\d+)/', $str, $arr); echo $arr['num']; //相当

  • js 正则表达式学习笔记之匹配字符串

    今天看了第5章几个例子,有点收获,记录下来当作回顾也当作分享. 关于匹配字符串问题,有很多种类型,今天讨论 js 代码里的字符串匹配.(因为我想学完之后写个语法高亮练手,所以用js代码当作例子) 复制代码 代码如下: var str1 = "我是字符串1哦,快把我取走", str2 = "我是字符串2哦,快把我取走"; 比如这样一个字符串,匹配起来很简单 /"[^"]*"/g 即可.   PS: 白色截图是 chrome 34 控制台中

  • php 正则表达式学习笔记

    复制代码 代码如下: //匹配文本,这个偶尔比较好用,但是要小心字符中包含\E  $str = '[a-z]';  $str = preg_replace('/\G[a-z]\E/', '', $str);  echo $str; //打印空,全被替换掉了,相关大概就是preg_quote功能  复制内容到剪贴板代码:  //给匹配结果命名,这样在匹配结果中就可以用这个名称来获取值  $str = 'abc123abc';  preg_match('/(?P<num>\d+)/', $str,

随机推荐