正则表达式:
REGEXP: Regular Expressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。
基于文档内容,以下是正则表达式中每个字符的详细用法笔记,并附有示例:
元字符(字符匹配)
-
.:匹配任意单个字符,包括汉字。- 示例:
grep 'r..t' /etc/passwd匹配包含 “r” 后跟任意两个字符,再跟 “t” 的行。
- 示例:
-
():通常表示转义符,只表示字面上的(和)。- 示例:
echo "abc" | grep "\(abc\)\{3\}"匹配字符串 “abcabcabc”。
- 示例:
-
[]:匹配指定范围内的任意单个字符,如[dn]、[0-9]、[a-z]等。- 示例:
ls | grep '[a-z].txt'匹配以小写字母开头,后跟 “.txt” 的文件名。
- 示例:
-
[^]:匹配指定范围外的任意单个字符,如[^dn]、[^a-z]。- 示例:
ls | grep '[^a-z].txt'匹配不以小写字母开头的 “.txt” 文件名。
- 示例:
-
[:alnum:]:匹配字母和数字。- 示例:
grep '[[:alnum:]]+' file.txt匹配包含至少一个字母或数字的行。
- 示例:
-
[:alpha:]:匹配任何英文大小写字符。- 示例:
grep '[[:alpha:]]+' file.txt匹配包含至少一个字母的行。
- 示例:
-
[:lower:]:匹配小写字母。- 示例:
grep '[[:lower:]]+' file.txt匹配包含至少一个小写字母的行。
- 示例:
-
[:upper:]:匹配大写字母。- 示例:
grep '[[:upper:]]+' file.txt匹配包含至少一个大写字母的行。
- 示例:
-
[[:blank:]]:匹配空白字符(空格和制表符)。- 示例:
grep '[[:blank:]]+' file.txt匹配包含至少一个空白字符的行。
- 示例:
-
[:space:]:匹配各种类型的空白字符。- 示例:
grep '[[:space:]]+' file.txt匹配包含至少一个空白字符的行。
- 示例:
-
[:cntrl:]:匹配不可打印的控制字符。- 示例:
grep '[[:cntrl:]]+' file.txt匹配包含至少一个控制字符的行。
- 示例:
-
[:digit:]:匹配十进制数字。- 示例:
grep '[[:digit:]]+' file.txt匹配包含至少一个数字的行。
- 示例:
-
[:xdigit:]:匹配十六进制数字。- 示例:
grep '[[:xdigit:]]+' file.txt匹配包含至少一个十六进制数字的行。
- 示例:
-
[:graph:]:匹配可打印的非空白字符。- 示例:
grep '[[:graph:]]+' file.txt匹配包含至少一个可打印非空白字符的行。
- 示例:
-
[:print:]:匹配可打印字符。- 示例:
grep '[[:print:]]+' file.txt匹配包含至少一个可打印字符的行。
- 示例:
-
[:punct:]:匹配标点符号。- 示例:
grep '[[:punct:]]+' file.txt匹配包含至少一个标点符号的行。
- 示例:
-
\w:匹配单词构成部分,等价于[_[:alnum:]]。- 示例:
grep '\w+' file.txt匹配包含至少一个单词字符的行。
- 示例:
-
\W:匹配非单词构成部分,等价于[^_[:alnum:]]。- 示例:
grep '\W+' file.txt匹配包含至少一个非单词字符的行。
- 示例:
-
\S:匹配任何非空白字符。- 示例:
grep '\S+' file.txt匹配包含至少一个非空白字符的行。
- 示例:
-
\s:匹配任何空白字符。- 示例:
grep '\s+' file.txt匹配包含至少一个空白字符的行。
- 示例:
表示次数
-
*:匹配前面的字符任意次,包括0次。- 示例:
echo "google" | grep 'go\{2\}gle'匹配 “google”。
- 示例:
-
.*:匹配任意长度的任意字符,不包括0次。- 示例:
echo "gdadadadgle" | grep "g.*gle"匹配 “gdadadadgle”。
- 示例:
-
\?:匹配其前面的字符出现0次或1次。- 示例:
echo "ggle" | grep "go\?gle"匹配 “ggle”。
- 示例:
-
\+:匹配其前面的字符出现最少1次。- 示例:
echo "google" | grep "go\+gle"匹配 “google”。
- 示例:
-
\{n\}:匹配前面的字符=n次。- 示例:
echo "google" | grep 'go\{2\}gle'匹配 “google”。
- 示例:
-
\{m,n\}:匹配前面的字符至少m次,至多n次。- 示例:
echo "goooooogle" | grep 'go\{2,5\}gle'匹配 “goooooogle”。
- 示例:
-
\{,n\}:匹配前面的字符至多n次。- 示例:
echo "goooooogle" | grep 'go\{,5\}gle'匹配 “goooooogle”。
- 示例:
-
\{n,\}:匹配前面的字符至少n次。- 示例:
echo "goooooogle" | grep 'go\{2,5\}gle'匹配 “goooooogle”。
- 示例:
位置锚定
-
^:行首锚定。- 示例:
grep "^[^#]" /etc/fstab匹配不以 “#” 开头的行。
- 示例:
-
$:行尾锚定。- 示例:
grep "^google$" test.txt只匹配 “google” 这个单词。
- 示例:
-
^$:匹配空行。- 示例:
grep "^[[:space:]]*$" /etc/fstab匹配空白行。
- 示例:
-
\<或\b:词首锚定。- 示例:
echo "hello-123" | grep "\b123"匹配包含 “123” 的单词。
- 示例:
-
\>或\b:词尾锚定。- 示例:
echo "hello-123" | grep "\bhello"匹配包含 “hello” 的单词。
- 示例:
分组或其他
-
():分组。- 示例:
echo "1abc" | grep "1\|2abc"匹配 “1abc”。
- 示例:
-
\|:或者。- 示例:
echo "1abc2abc" | grep "\(1\|2\)abc"匹配 “1abc” 或 “2abc”。
- 示例:
扩展正则表达式
-E:使用扩展正则表达式。- 示例:
grep -E "[0-9]+-[0-9]+" number.txt匹配格式为 “数字-数字” 的字符串。
- 示例:
