正则表达式
总结正则表达式的规则和使用方法。
正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作,其中最为重要作用是匹配。
✏️ 正则表达式与通配符
正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed
等命令可以支持正则表达式。
正则表达式是包含匹配,即文件中的语句中包含了查找的字符串,那么就显示整行语句。
通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp
这些命令不支持正则表达式,所以只能使用shell
自己的通配符来进行匹配了。
通配符必须是完全匹配,如
find . -name “abc?”
查找到4个字符的文件名其中前三个字符是abc,列出的abcd、abce等文件。
✏️ 元字符
正则表达式包含了普通字符(A-Za-z0-9)、特殊字符(元字符)列表及它们在正则表达式中的行为。其中,如果要匹配特殊字符,需要用\
转义,即:匹配+
,用\+
。在Linux中,正则表达式可以分为基本正则表达式和扩展正则表达式。
🖌️ 1、元字符总结
元字符 | 作用 |
| 匹配输入字符串的开始位置。除非在方括号表达式中使用,表示不包含该字符集合。要匹配 |
| 匹配输入字符串的结尾位置。如果设置了 |
| 匹配除 |
| 将下一个字符标记为特殊字符、原义字符、向后引用、八进制转义符。例如, |
| 匹配前一个字符0次或任意多次,匹配前一个字符0次则表示可以匹配任意字符,包括空白行。 |
| 字符匹配。匹配所包含的任意一个字符。 |
| 赋值字符集合。匹配未包含的任意一个字符。 |
| 字符范围。匹配指定范围内的任意一个字符。例如, |
|
|
|
|
|
|
🖌️ 2、扩展正则表达式元字符总结
元字符 | 作用 |
| 重复一次或一次以上的前一个字符。执行 |
| 匹配零次或一次前一个字符。等效于 {0,1}。 当 ? 紧随任何其他限定符( 执行 |
| 使用或 |
| 查找“组”字符串。执行 |
| 匹配多个重复的组。执行 |
🖌️ 3、非打印字符
非打印字符 | 匹配 | 等效于 |
\f | 换页符。 | \x0c 和 \cL |
\n | 换行符。 | \x0a 和 \cJ |
\r | 回车符。 | \x0d 和 \cM |
\s | 任何空白字符。 其中包括空格、制表符和换页符。 | [ \f\n\r\t\v] |
\S | 任何非空白字符。 | [^ \f\n\r\t\v] |
\v | 垂直制表符。 | \x0b 和 \cK |
🖌️ 4、多字符
多字符 | 功能 | 示例 |
\b | 与一个字边界匹配;即字与非字之间的位置。 | er\b 与“never”中的“er”匹配,但与“verb”中的“er”不匹配。 |
\B | 非边界字匹配,即非字与字之间的位置。 | er\B 与“verb”中的“er”匹配,但与“never”中的“er”不匹配。 |
\d | 数字字符匹配,等效于 [0-9]。 | 在搜索字符串“12345”中,\d{2} 与“12”和“34”匹配。 \d 与“1”、“2”、“3”、“4”和“5”匹配。 |
\D | 非数字字符匹配。 等效于 [^0-9]。 | \D+ 与“abc123 def”中的“abc”和“def”匹配。 |
\a | 英文字母,等效于[a-zA-Z]。 | \a{3} 与 “abc123” 中的“abc”匹配。 |
\w | 与以下任意字符匹配:A-Z、a-z、0-9 和下划线。 等效于 [A-Za-z0-9_]。 | 在搜索字符串“The quick brown fox…”中,\w+ 与“The”、“quick”、“brown”和“fox”匹配。 |
\W | 与除 A-Z、a-z、0-9 和下划线以外的任意字符匹配。 等效于 。 | 在搜索字符串“The quick brown fox…”中,\W+ 与“…”和所有空格匹配。 |
Last updated