正则表达式学习笔记
- 一、概念
- 二、正则表达式组成
- 三、常见的正则表达式
- 3.1 .匹配任意字符
- 3.2 * 匹配前一个字符的0个或多个实例
- 3.3 ^ 匹配输入字符串的开头
- 3.4 $ 匹配行尾
- 3.5 [] 匹配字符集合
- \<\> 精确匹配符号
一、概念
正则表达式是由一系列特殊字符组成的字符串,每个特殊字符都被称为元字符,元字符并不表示字面上的含义,而都有特定的含义。
正则表达式由普通字符和元字符组成的集合,这个集合用来匹配模式。正则表达式的功能就是文本查询和字符串操作,它可以匹配文本的一个字符与字符集合。
例如a、b、1、2等字符属于普通字符,普通字符可以按照字面理解,
而*、^、[]等元字符,shell赋予了他们超越字面意思的意义,如*字面意思是符号,实际却表示重复前面的字符0次或多次的隐藏含义。
二、正则表达式组成
一个正则表达式由下列1项或多项组成:
1.一个字符集: 普通字符
2.锚: 指定了正则表达式要匹配的文本在文本行中所处的位置,如^和$就锚
3.修饰符 扩大或缩小正则表达式匹配文本的范围,修饰符含星号、括号和反斜杠
三、常见的正则表达式
正则表达式由一系列特殊字符组成,其中每个字符都有特定的含义和功能。以下是一些常见的正则表达式字符和功能:
. 匹配任意字符(除了换行符)
* 匹配前一个字符的0个或多个实例
+ 匹配前一个字符的1个或多个实例
? 匹配前一个字符的0个或1个实例
^ 匹配输入字符串的开头
$ 匹配输入字符串的结尾
\ 转义符
[] 匹配字符集合
\<\> 精确匹配符号
\{n\} 匹配前面字符出现n次
\{n,\} 匹配前面字符至少出现n次
\{n,m\} 匹配前面字符出现n次与m次之间
[abc] 匹配方括号内的任意一个字符(这里是a、b或c)
[^abc] 匹配除方括号内字符之外的任意字符
\\d 匹配任意数字字符
\\D 匹配任意非数字字符
\\s 匹配任意空白字符(包括空格、制表符等)
\\S 匹配任意非空白字符
\\w 匹配任意字母、数字或下划线字符
\\W 匹配任意非字母、数字或下划线字符
3.1 .匹配任意字符
.用于匹配任意字符,…73表示前面3个字符为任意字符,第4和第5 个字符为7和3
3.2 * 匹配前一个字符的0个或多个实例
*用于匹配前面一个普通字符的0次或多次
cat hell0.txt | grep l*
3.3 ^ 匹配输入字符串的开头
3.4 $ 匹配行尾
$匹配行尾
cat josh.txt | grep josh$
^$ 匹配空白行
cat josh.txt | grep ^$
3.5 [] 匹配字符集合
[]匹配字符集合,将匹配中括号字符集中的某一字符
匹配字符j
cat josh.txt | grep [j]
匹配26字母顺序[a-b]间任意字符,
cat josh.txt | grep [a-b]
匹配任意小写字符或数字
cat josh.txt | grep [a-z0-9]
匹配范围在a~z之外的任意一个字符
grep "[^a-z]" az.txt