正则表达式学习
参考教程
正则表达式 - 语法
说明:速查速记,学习参考网址已足够。可以配合练习网址 食用。
正则表达式格式
/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
可以匹配aba
和aaa
.
正向预查和负向预查
记忆:带<
为负向预查,否则为正向。
exp1(?=exp2)
:查找exp2
前面的exp1
(?<=exp2)exp1
:查找exp2
后面的exp1
exp1(?!exp2)
:查找后面不是exp2
的exp1
(?<!exp2)exp1
:查找前面不是exp2
的exp1
反向引用
不是很了解,暂略
修饰符
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.
Comments