正则表达式

正则表达式:

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 匹配格式为 “数字-数字” 的字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值