正则表达式是一种描述一组字符串的模式,为处理大量文本、字符串而定义的一套规则和方法,以行为单位进行处理。正则表达式分为两类:基本正则表达式(BRE)和扩展正则表达式(ERE)。在linux中使用正则表达式较多的有三个工具,分别为grep,sed和awk,这三个工具被称为linux文本处理的三剑客。
4.1、正则表达式元字符集
4.2、基本组成部分
\d+ ‘325535’‘1243435’‘1’ \w? ‘’‘5’‘fff’ \w* ‘’‘hgvdhvehjrbj’‘vqwgr443v4v’‘$KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲#q’ [A-Z] [a-z…
^上冒号
4.3、正则表达式使用例子
1、“^\d+
”
/
/
非
负
整
数
(
正
整
数
+
0
)
2
、
“
[
0
−
9
]
∗
[
1
−
9
]
[
0
−
9
]
∗
” //非负整数(正整数 + 0) 2、“^[0-9]*[1-9][0-9]*
”//非负整数(正整数+0)2、“[0−9]∗[1−9][0−9]∗” //正整数
3、“^((-\d+)|(0+))
”
/
/
非
正
整
数
(
负
整
数
+
0
)
4
、
“
−
[
0
−
9
]
∗
[
1
−
9
]
[
0
−
9
]
∗
” //非正整数(负整数 + 0) 4、“^-[0-9]*[1-9][0-9]*
”//非正整数(负整数+0)4、“−[0−9]∗[1−9][0−9]∗” //负整数
5、“^-?\d+KaTeX parse error: Expected group after '^' at position 13: ” //整数 6、“^̲\d+(\.\d+)?” //非负浮点数(正浮点数 + 0)
7、“^(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9]))KaTeX parse error: Expected 'EOF', got '\d' at position 19: …/正浮点数 8、“^((-\̲d̲+(\.\d+)?)|(0+(…” //非正浮点数(负浮点数 + 0)
9“^(-(([0-9]+.[0-9][1-9][0-9])|([0-9][1-9][0-9].[0-9]+)|([0-9][1-9][0-9])))KaTeX parse error: Expected 'EOF', got '\d' at position 20: …负浮点数 10、“^(-?\̲d̲+)(\.\d+)?” //浮点数
11、“1+
”
/
/
由
26
个
英
文
字
母
组
成
的
字
符
串
12
、
“
[
A
−
Z
]
+
” //由26个英文字母组成的字符串 12、“^[A-Z]+
”//由26个英文字母组成的字符串12、“[A−Z]+” //由26个英文字母的大写组成的字符串
13、“2+
”
/
/
由
26
个
英
文
字
母
的
小
写
组
成
的
字
符
串
14
、
“
[
A
−
Z
a
−
z
0
−
9
]
+
” //由26个英文字母的小写组成的字符串 14、“^[A-Za-z0-9]+
”//由26个英文字母的小写组成的字符串14、“[A−Za−z0−9]+” //由数字和26个英文字母组成的字符串
15、“^\w+KaTeX parse error: Expected 'EOF', got '\d' at position 41: …串 16、^[A-Za-z\̲d̲]+([-_.][A-Za-z… 邮箱
17、“3+://(\w+(-\w+))(.(\w+(-\w+)))(?\S)?KaTeX parse error: Expected 'EOF', got '\d' at position 17: … //url 18、/^(\̲d̲{2}|\d{4})-((0(…/ // 年-月-日
19、/^((0([1-9]{1}))|(1[1|2]))/((0-2)|(3[0|1]))/(d{2}|d{4})
/
/
/
月
/
日
/
年
20
、
“
(
[
w
−
.
]
+
)
@
(
(
[
[
0
−
9
]
1
,
3
.
[
0
−
9
]
1
,
3
.
[
0
−
9
]
1
,
3
.
)
∣
(
(
[
w
−
]
+
.
)
+
)
)
(
[
a
−
z
A
−
Z
]
2
,
4
∣
[
0
−
9
]
1
,
3
)
(
]
?
)
/ // 月/日/年 20、“^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)
///月/日/年20、“([w−.]+)@(([[0−9]1,3.[0−9]1,3.[0−9]1,3.)∣(([w−]+.)+))([a−zA−Z]2,4∣[0−9]1,3)(]?)” //Email
21、/^((+?[0-9]{2,4}-[0-9]{3,4}-)|([0-9]{3,4}-))?([0-9]{7,8})(-[0-9]+)?$/ //电话号码
22、 //IP地址
23、匹配中文字符的正则表达式:
24、匹配双字节字符(包括汉字在内):
25、匹配空行的正则表达式:
26、匹配HTML标记的正则表达式:
27、匹配首尾空格的正则表达式:
28、匹配Email地址的正则表达式:
29、匹配网址URL的正则表达式:
30、匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):
31、匹配国内电话号码:
32、匹配腾讯QQ号:
5.4、文本处理三剑客以及配合正则表达式使用范例以及find
1、grep
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
2、grep主要参数
[options]主要参数:
-a或–text 不要忽略二进制的数据。
-A<显示列数>或–after-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之后的内容。
-b或–byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。
-B<显示列数>或–before-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前的内容。
-c或–count 计算符合范本样式的列数。
-C<显示列数>或–context=<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作>或–directories=<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式>或–regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。
-E或–extended-regexp 将范本样式为延伸的普通表示法来使用。
-f<范本文件>或–file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。
-F或–fixed-regexp 将范本样式视为固定字符串的列表。
-G或–basic-regexp 将范本样式视为普通的表示法来使用。
-h或–no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H或–with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名称。
-i或–ignore-case 忽略字符大小写的差别。
-l或–file-with-matches 列出文件内容符合指定的范本样式的文件名称。
-L或–files-without-match 列出文件内容不符合指定的范本样式的文件名称。
-n或–line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号。
-q或–quiet或–silent 不显示任何信息。
-r或–recursive 此参数的效果和指定“-d recurse”参数相同。
-s或–no-messages 不显示错误信息。
-v或–revert-match 反转查找。
-V或–version 显示版本信息。
-w或–word-regexp 只显示全字符合的列。
-x或–line-regexp 只显示全列符合的列。
-y 此参数的效果和指定“-i”参数相同。
–help 在线帮助。