正则表达式学习

正则表达式学习

spiritTrance

参考教程

正则表达式 - 语法
说明:速查速记,学习参考网址已足够。可以配合练习网址 食用。

正则表达式格式

/pattern/flag,其中pattern为模式串,flag为修饰符

普通字符

不赘述。a-zA-Z0-9_

  • \s 匹配空白符(包括换行),\S 匹配非空白符
  • \w 匹配字母数字下划线(等价于匹配程序的identifier)
  • \d 匹配所有数字字符
  • . 代表任意字符(不包括换行符,除非修饰符为s

非打印字符

重要的就\n\r这两个换行符及制表符\t

限定符

作用是指定前面的字表达式出现几次:

  • ?:匹配0-1次,等价于{0,1}
  • *:匹配0到无数次,等价于{0,}
  • +:匹配1到无数次,等价于{1,}
  • {m,n}:匹配m到n次,m和n可以没有,逗号表范围
  • {m}:匹配m次

贪婪与非贪婪匹配

?控制,例:对于待匹配串<h1>str<h1>,模式串<.*?>为非贪婪模式,仅匹配<h1>,如果为<.*>,默认为贪婪模式,匹配<h1>str<h1>

定位符

  • ^:匹配字符串开始位置,注意修饰符如果是m,则还会匹配换行符\n\r后的位置
  • $:匹配字符串结束位置,特性同^
  • \b:匹配单词边界(空格)
  • \B:匹配非边界
    例:\Bcha 可以匹配到achaa,但chapter不行,但\bcha反之。^cha可以匹配chapter

选择

使用|即可。
例:a(a|b)a可以匹配abaaaa.

正向预查和负向预查

记忆:带<为负向预查,否则为正向。

  • exp1(?=exp2):查找 exp2 前面的 exp1
  • (?<=exp2)exp1:查找 exp2 后面的 exp1
  • exp1(?!exp2):查找后面不是 exp2exp1
  • (?<!exp2)exp1:查找前面不是 exp2exp1

反向引用

不是很了解,暂略

修饰符

  • i:不区分大小写
  • g:全局匹配
  • m:多行匹配,对^$有影响
  • s:特殊字符圆点.包含换行符\n
  • Title: 正则表达式学习
  • Author: spiritTrance
  • Created at: 2023-08-17 12:47:19
  • Updated at: 2024-01-06 20:07:57
  • Link: https://spirittrance.github.io/2023/08/17/linux_正则表达式学习/
  • License: This work is licensed under CC BY-NC-SA 4.0.
推荐阅读
linux基本操作学习 linux基本操作学习 【MIT6.172】学习笔记(1) 【MIT6.172】学习笔记(1) 【cpp查漏补缺】2-Makefile入门 【cpp查漏补缺】2-Makefile入门
 Comments