正则表达式5分钟入门教程,含大量实例

常用元字符

元字符主要用于字符匹配

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

常用限定符

限定符主要用于表示重复次数

代码/语法说明
*重复零次或更多次,等价于{0,}
+重复一次或更多次,等价于{1,}
?重复零次或一次,等价于 {0, 1}
n重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

常用反义词

反义词一般是大写的元字符

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

举例:

  • ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"
    $ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"
    * 匹配前面元字符0次或多次,等价于{0,},/ba*/将匹配b,ba,baa,baaa
    + 匹配前面元字符1次或多次,等价于{1,},/ba+/将匹配ba,baa,baaa
    ? 匹配前面元字符0次或1次,也就是说前一项是可选的,等价于 {0, 1},/ba?/将匹配b,ba
    (x) 匹配x保存x在名为$1…$9的变量中
    x|y 匹配x或y
    {n} 精确匹配n次,匹配前一项恰好n次
    {n,} 匹配n次以上
    {n,m} 匹配n-m次,匹配前一项至少n次,但是不能超过m次
    [xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)
    [^xyz] 不匹配这个集合中的任何一个字符
    [\b] 匹配一个退格符
    \b 匹配一个单词的边界
    \B 匹配一个单词的非边界
    \cX 这儿,X是一个控制符,\cM匹配Ctrl-M
    \d 匹配一个字数字符,/\d/ = /[0-9]/
    \D 匹配一个非字数字符,/\D/ = /[^0-9]/
    \n 匹配一个换行符
    \r 匹配一个回车符
    \s 匹配一个空白字符,包括\n,\r,\f,\t,\v等,包括空格,制表符(Tab),换行符,中文全角空格等
    \S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/
    \t 匹配一个制表符
    \v 匹配一个重直制表符
    \w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9]
    \W 匹配一个不可以组成单词的字符,如[\W]匹配" 5.98 " 中 的 5.98"中的 5.98",等于[^a-zA-Z0-9]。

复杂举例

  • /\d{2, 4}/ 匹配2到4间的数字
  • /\w{3} \d?/ 匹配三个单字字符和一个任意的数字
  • /\s+java\s+/ 匹配字符串"java" ,并且该串前后可以有一个或多个空格
  • /\d{3}|[a-z]{4}/ 匹配的是要么是一个三位数,要么是四个小写字母
  • /java(script) ?/ 匹配的是字符串 “java”,其后既可以有 “script”,也可以没有
  • /[' "] [^ ' "]*[' "]/ 匹配的就是位于单引号或双引号之内的所有字符。但是它要求开始和结束的引号匹配(例如两个都是双引号或者都是单引号)
  • /( [' "] ) [^ ' "] * \1/ 如果要求开始和结束的引号匹配,\1 引用的是第一个代括号的子表达式。\3 引用的是第三个代括号的子表达式,注意由于子表达式可以嵌套在其它子表达式中,所以它的位置是被计数的左括号的位置
  • /\b java \b/gi/ 匹配"java" 或"JAVA"。i 执行大小写不敏感的匹配;g 执行一个全局的匹配,简而言之,就是找到所有的匹配,而不是在找到第一个之后就停止了。g,i是正则表达式的属性。
  • /^\d{5,12}$/ 匹配5位到12位数字
  • /\b\w{6}\b/ 匹配刚好6个字符的单词

分枝条件 |

  • /0\d{2}-\d{8}|0\d{3}-\d{7}/ 这个表达式能匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)

分组()

小括号来指定子表达式(也叫做分组)

  • /(\d{1,3}\.){3}\d{1,3}/ 是一个简单的IP地址匹配表达式。要理解这个表达式,请按下列顺序分析它:\d{1,3}匹配1到3位的数字,(\d{1,3}\.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(\d{1,3})

给匹配内容指定组名

代码/语法说明
(exp)匹配exp,并捕获文本到自动命名的组里
(?<name>exp)匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name’exp)
(?:exp)匹配exp,不捕获匹配的文本,也不给此分组分配组号
(?=exp)匹配exp前面的位置
(?<=exp)匹配exp后面的位置
(?!exp)匹配后面跟的不是exp的位置
(?<!exp)匹配前面不是exp的位置
(?#comment)注释,这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读

举例:

  • /\b\w+(?=ing\b)/ 匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I’m singing while you’re dancing.时,它会匹配sing和danc
  • /(?<=\bre)\w+\b/ 匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading
  • /\d{3}(?!\d)/ 匹配三位数字,而且这三位数字的后面不能是数字
  • /\b((?!abc)\w)+\b/ 匹配不包含连续字符串abc的单词
  • /(?<=<(\w+)>).*(?=<\/\1>)/ 匹配不包含属性的简单HTML标签内里的内容。
    注意后缀里的\/,它用到了前面提过的字符转义;\1则是一个反向引用,引用的正是捕获的第一组,前面的(\w+)匹配的内容,这样如果前缀实际上是<b>的话,后缀就是</b>了
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
  《正则表达式入门经典》详细解释了正则表达式的各个组成部分、这些组成部分的义、如何使用它们,以及在编写正则表达式时如何避免常见的错误。正则表达式能够帮助用户和开发人员更加有效地查找和操纵文本内容。而且,正则表达式已经得到了许多脚本语言、编程语言和数据库的良好支持。这本示例丰富的教程将打破所谓正则表达式难以掌握的传统神话。   通过逐章地讲解如何在流行的Windows平台的软件——包括数据库、跨平台的脚本语言和编程语言中使用正则表达式,你将学习到如何有效地驾驭正则表达式所提供的强大功能,并且全面理解正则表达式的高度灵活性和无限潜能。   ·正则表达式的基本概念以及如何编写正则表达式   ·如何分解文本操作问题并构建符合逻辑的正则表达式模式   ·如何在不同的脚本或编程语言以及软件包中使用正则表达式   ·当前各种正则表达式实现之间存在的差别   ·可以解决日常问题的、可重用的正则表达式示例代码   《正则表达式入门经典》读者对象   《正则表达式入门经典》适用于那些需要解决文本操作问题,但还不了解正则表达式的开发人员。虽然一些基本的编程或脚本编写经验是有用的,但并不是必需的。   《正则表达式入门经典》技术支持从Web站点www.wrox.com和www.tupwkcom.cn/downpage上可以获取《正则表达式入门经典》的源代码和Wrox技术支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值