美文网首页
正则表达式学习

正则表达式学习

作者: 叶落清秋 | 来源:发表于2022-04-28 08:56 被阅读0次

1. 基础语法

  • . - 除换行符以外的所有字符。
  • ^ - 字符串开头。
  • $ - 字符串结尾。
  • \d,\w,\s - 匹配数字、字符、空格。
  • \D,\W,\S - 匹配非数字、非字符、非空格。
  • [abc] - 匹配 a、b 或 c 中的一个字母。
  • [a-z] - 匹配 a 到 z 中的一个字母。
  • [^abc] - 匹配除了 a、b 或 c 中的其他字母。
  • aa|bb - 匹配 aa 或 bb。
  • {n} - 匹配 n次。
  • {n,} - 匹配 n次以上
  • {m,n} - 最少 m次,最多n次匹配
  • ? - 0 次或 1 次匹配 等价于{0,1}
  • * - 匹配 0 次或多次 等价于{0,}
  • + - 匹配 1 次或多次 等价于{1,}
  • (expr) - 捕获expr子模式,以 \1 使用它。

ps: {n}{n,}{m,n}?*+只匹配前一个字符

abc+ : 匹配 abc、abcc、 abccc等

a[bc]+: 匹配ab、ac、abb、abc、acb等

a(bc)+: 匹配abc、abcbc、abcbcbc等

a|b|c+: 注意这个+与c绑定,实际匹配的是a、b、c、cc、ccc、cccc等

^abc : 匹配以abc开头的字符串

.: 对应除换行符以外的所有字符,但只对应一个字符,.+ 匹配除换行符以外的所有字符

2. 括号的用法

() 是组,可以是表达式

--() 匹配的是组,可以是多个字符,匹配保存结果,即产生数组保存对应的对个值,可以使用$1获取第一个匹配值
(abc| bac| cba) 匹配abc或bac或cba,顺序固定
-- (?)以?开头的为非获取匹配,只匹配不保存结果,即不产生数组
tr(?=y|ies|ying|ied) 该方式等同于try|tries|trying|tried
a(?=bc) 匹配以abc顺序出现的a                     (?<=bc)a  前置匹配,匹配以bca顺序出现的a
a(?!bc) 匹配不以abc顺序出现的a   如:ac中的a       (?<!bc)a  前置匹配,匹配不以bca顺序出现的a   如:ca中的a

[] 是定义匹配的字符范围

 -- [] 匹配单个字符
[1-9] 匹配1到9的数字
[135] 匹配1、3、5中的数字
[?*+(a)]  注意,[]中特殊字符不需要转义即可使用,这里匹配?、*、+、(、a、)中的任一字符,并不是表达式
[]中有用的符号为:
1. ^ 取反 ^a即除a以外的字符
2. - 区间 a-z即 a到z的字母
3. \ 匹配特殊字符: 换行(\n) 中文(\u4e00-\u9fa5)等

{} 用来匹配的长度

{n} - 匹配 n次。
{n,} - 匹配 n次以上
{m,n} - 最少 m次,最多n次匹配

3. 优先级

正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似

运算符 描述
\ 转义符
(), (?:), (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, \任何元字符、任何字符 定位点和序列(即:位置和顺序)
| 替换,"或"操作 字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。

4.修饰符

通常使用g/[1-9]/g

修饰符 含义 描述
i ignore - 不区分大小写 将匹配设置为不区分大小写,搜索时不区分大小写: A 和 a 没有区别。
g global - 全局匹配 查找所有的匹配项。
m multi line - 多行匹配 使边界字符 ^$ 匹配每一行的开头和结尾,记住是多行,而不是整个字符串的开头和结尾。
s 特殊字符圆点 . 中包含换行符 \n 默认情况下的圆点 . 是匹配除换行符 \n 之外的任何字符,加上 s 修饰符之后, . 中包含换行符 \n。

5. 非贪婪

*和 +限定符都是贪婪的,它们会尽可能多的匹配文字。但是加上?将变成非贪婪表达式、最小匹配

<span> hello </span>
<.*>    匹配<span> hello </span>
<.*?>   匹配<span>

相关文章

  • java 正则表达式 简单入门

    java 正则表达式用法 最近学习编译原理,要用到正则表达式。本次要学习如何用java正则表达式。正则表达式:可以...

  • 优秀网站收藏

    php学习的最好资源--QuorafreeCodeCamp正则表达式练习+学习程序员直播平台正则表达式学习chan...

  • 写正则表达式的正确姿势

    前言 上一篇文章我们学习了正则表达式原理,这次我们学习下怎么写正则表达式。这里,我们不会学习正则表达式的各种符号,...

  • 2018-01-22重命名

    正则表达式的学习

  • 正则表达式学习链接

    正则表达式学习链接OC 正则表达式30分钟入门教程

  • Python密码校验脚本

    最近学习python,学习中写了一个密码校验的脚本,其实主要就是用到了正则表达式,顺便也学习了一下正则表达式...

  • PostgreSQL正则表达式

    PostgreSQL正则表达式 编程,是一种触类旁通的技能。 学习正则表达式我是通过python这门语言学习的。没...

  • Biostar学习笔记(6)正则表达式和序列比对

    正则表达式 学习资料: Intro to Regular expressions 30分钟入门正则表达式 为什么要...

  • 正则表达式

    使用正则表达式 来源Github项目:jackfrued/Python-100-Days仅供学习参考 正则表达式相...

  • 正则表达式浅略学习

    在javascript编程中,会时常用到正则表达式。因此,决定对正则表达式进行学习。 学习的目的主要是能够在编程中...

网友评论

      本文标题:正则表达式学习

      本文链接:https://www.haomeiwen.com/subject/ffbryrtx.html