正则表达式常用语法总结

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本

普通字符

  • 字母、数字、标点符号、键盘特殊符号等

定义字符集

  1. [a-z] 匹配 26 个字母之一
  2. [aeiou] 匹配 aeiou 这 5 个字符其中的某一个字符
  3. [a-zA-Z] 匹配 26 个(大小写)字母中的某一个字母
  4. [a-zA-Z0-9_-] 匹配(大小写)字母、数字、下划线、中横线 的某一个字符
  5. [0-9] 匹配 0 到 9 之间任意一个数字
  6. [9-3] [z-a] 不能从大往小写,有语法错误

shiy 特别字符集

  1. $ 匹配输入字符串的结尾位置(regexBuddy中待测试文本中多行算作一行)
  2. ^ (托字符) 匹配字符串的开始位置(托字符)
  3. ( ) 匹配一个子表达式的开始和结束位置,模式单元
  4. * 匹配其前面那个单元出现 0 次或以上(任意次数)
  5. + 匹配其前面那个单元出现 1 次或以上
  6. \? 匹配其前面那个单元出现 0 次或 1 次
  7. .点 匹配除换行符 \n 之外的任何单字符 .*
  8. \ 这个符号是用来转义的
  9. | 指明两项之间的一个选择

组合字符集

  1. \d 匹配数字 0 到 9 之一,与[0-9]效果一样
  2. \D 匹配非数字[^0-9]之一
  3. \w 匹配(大小写)字母、数字、下划线其中一个,与[a-zA-Z0-9_]效果相同
  4. \W 匹配非字母、数字、下划线之一
  5. \s 匹配一个空格
  6. \S 匹配一个非空格
  7. \b 匹配单词的开始或结束

限制字符集

  1. {m} 匹配其前一单元严格出现 m 次
  2. {m,} 匹配其前一单元出现至少m次,至多不限制,{0,}相等于*,{1,}相等于+
  3. {m,n} 匹配其前一单元出现至少 m,至多 n 次
  4. [^lsjd] 匹配非 lsjd 之中的字符
  5. [^a-f] 匹配非 a 到 f 之间的一个字符
  6. [^定义字符集] 不给匹配定义字符集里边的信息

模式修正符

  1. g 全文查找出现的所有 正在模式内容 (全局匹配) (php 中可以使用 preg_match_all()函数限制全局匹配)
  2. i 忽略大小写
  3. m 将匹配内容视为多行
  4. /u 表示按 unicode(utf-8)匹配(主要针对多字节比如汉字)
  5. /s 表示将字符串视为单行来匹配

贪婪模式转非贪婪模式

通过在 *、+ 或 ? 限定符之后放置?,该表达式从”贪心”表达式转换为”非贪心”表达式或者最小匹配

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏C/C++基础

C++11继承构造函数

子类为完成基类初始化,在C++11之前,需要在初始化列表调用基类的构造函数,从而完成构造函数的传递。如果基类拥有多个构造函数,那么子类也需要实现多个与基类构造函...

17920
来自专栏desperate633

详解javascript中的即时函数,内部函数,能重写自身的函数即时函数内部函数返回函数的函数能重写自己的函数小结

在上篇谈到匿名函数和回调函数的基础上,我们接着介绍javascript中的即时函数,内部函数,返回函数的函数,能重写自身的函数等几种常见的函数类型及使用方法。只...

9310
来自专栏我的博客

插入排序

原理: 1. 从第一个元素开始,该元素可以认为已经被排序 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描 3. 如果该元素(已排序)大于新元素,...

26260
来自专栏技术换美食换不换

regular expression

A|B可以匹配A或B,所以(P|p)ython可以匹配'Python'或者'python'。

10730
来自专栏noteless

-1-2 java 面向对象基本概念 封装继承多态 变量 this super static 静态变量 匿名对象 值传递 初始化过程 代码块 final关键字 抽象类 接口 区别 多态

面向对象把功能逻辑封装到类本身,用对象去调用功能 持有数据,结构更加自然,也更符合人们的思维习惯

10910
来自专栏流媒体

C语言字符串操作

45630
来自专栏猿人谷

C++小结(1)

1. overload 仅仅返回值类型不同的函数不能被重载. 2. 所谓私有,是指该成员只能被类本身的方法访问----即使是这个类的对象也不能直接访问. 3. ...

21290
来自专栏塔奇克马敲代码

第 19 章 特殊工具与技术

21150
来自专栏编程

带你深入理解Python属性查找

今天扣丁学堂给大家介绍一下关于python视频教程中的属性查找,首先在Python中属性查找(attributelookup)是比较复杂的,特别是涉及到描述符d...

20990
来自专栏锦小年的博客

Python学习笔记3.2-python内置函数大全

学习python不可避免的首先要了解python的内置函数,熟悉了这些以后可以给编程带来很大的方便。 1、数学运算类 函数名 函数功能 备注 abs...

28290

扫码关注云+社区

领取腾讯云代金券