正则表达式笔记

慢慢记录。因为使用频率的原因,这个东西学了忘忘了学。

基本正则表达式(regular expression)

cp /etc/passwd /home/axe/test(复制模版文件)

cd home/axe/test

1."."表示任意单个字符。

grep :...: passwd #匹配::之间有三个字符的行。

2."*"匹配前一个字符0次或者n次

grep 00* passwd #匹配含有0的行

3.".*"匹配多个字符

4."[]"匹配[]中的任一字符

grep :1[01]*: passwd

5.[x-y]匹配连续的字符串

[0-9],[a-z]

6."^"匹配字串的头

grep ^root passwd

7."$"匹配字串的尾

8."[^n]"匹配否定

9."{n,}"匹配前一个字符重复至少n次

"{n,m}"匹配前一个字符重复n-m次。

"{n}"匹配前一个字符重复n次

grep "o{2,}" passwd #(要加引号) 匹配o至少两次

grep "o{1,2}" passwd #匹配o1-2次

grep "o{2}" passwd #匹配o两次

扩展正则表达式(Extended Regular Expression)

linux常用工具支持扩展正则的有egrep awk等等。

1.{n,m} 等同于基本正则里的{n,m},匹配前一个字符n-m次

2.+ 等同于基本正则里的 {1,} 匹配前一个字符1次或者多次

3.? 等同于基本正则里的{0,1} 匹配前一个字符0次或者1次。

4.| 匹配逻辑或者 eg: egrep "axe|root" passwd

POSIX规范
[:alpha:] 字母字符

[:alnum:] 字母与数字字符

[:cntrl:] 控制字符

[:digit:] 数字字符

[:xdigit:] 16进制

[:punct:] 标点

[:graph:] 非空格字符

[:print:] 任何可以显示的字符

[:space:] 空白

[:blank:] 空格与tab

[:lower:] 小写字符

[:upper:] 大写字符

在linux里POSIX规范可以通过[]引用。举个栗子,grep --color [[:digit:]] passwd

GUN规范

主要是转义元字符

应用实例

匹配一篇文章中所有的单词book

egrep "(^| )["[({]*book["])}?.,;:'s]*($| )" file

细节:

1.book前可能出现的字符有 "{([ ,ps.此处双引号使用反斜杠转义。

2.book后可能出现的字符有"})].,?:'s

3.在book两边有空格或者行首行尾标志^和$

原文地址:https://www.cnblogs.com/axeprpr/p/4830955.html