正则表达式及grep
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式及grep相关的知识,希望对你有一定的参考价值。
一·正则表示式的定义:
正则表达式是用在字符串处理上面的一项“表达式”,是字符串处理的标准依据,是由一串字符和 元字符组成的字符串。
二·正则表示式的作用:
正则表达式通过一些特殊符号(元字符)的辅助,可以让用户轻易达到查找、删除、替换某些特定 字符串的处理程序。
三·正则表达式的组成:
正则表达式的基本元素包括普通字符和元字符,例如a,b,1,2等属于普通字符,普通字符可以按照 字面意思理解,元字符是描述字符的字符,拥有超越字面意思的含义:
字符匹配:
.:匹配任意单个字符;
例:...73.
xcb738 4J973U都可以匹配,重要的是“.”可以匹配空格,因此x b738也可以匹配
[ ]:匹配范围内的任意单个字符;
[^ ]:匹配范围外的任意单个字符;
[A-Za-z] [A-Za-z]* 匹配所有英文单词
[:alpha:] 代表英文大小写字符,即A-Z,a-z
[:alnum:] 代表英文大小写字符及数字,即0-9,A-Z,a-z
[:digit:] 代表数字,即0-9
[:lower:] 代表小写字符,即a-z
[:upper:] 代表大写字符,即A-Z
[:space:] 代表所有产生空白的字符,包括空格键、[tab]键、CR等
[:punct:] 代表标点符号,即“?!;:#
[:print:] 代表任何可以被打印出来的字符
[:blank:] 代表空格键与[tab]键
匹配次数:
用在要指定其出现的次数的字符后面,用限制其前面的字符要出现的次数;默认工作于 贪婪模式;
*:匹配前面的字符任意次(0,1或多次);
grep "x*y":
xxxyabc yabc abcxy abcy
.*:任意长度的任意字符;
\+:匹配前面的字符至少1次;
\?:匹配前面的0次或1次,即前面的字符可有可无;
\{m\}:其前面的字符出现m次,m为非负整数;
\{m,n\}:其前面的字符出现至少m次,至多n次,m为非负整数;[m,n]
\{0,n\}:至多n次;
\{m,\}:至少m次;
位置锚定
限制使用模式搜索文本,限制模式所匹配到的文本只能出现于目标文本的哪个位置;
^:行首锚定;用于模式的最左侧,^PATTERN
$:行尾锚定;用于模式的最右侧,PATTERN$
^PATTERN$:要让PATTERN完全匹配一整行;
^$:空行;
\<或\b:词首锚定,用于单词模式的左侧,格式为\<PATTERN, \bPATTERN
\>或\b:词尾锚定,用于单词模式的右侧,格式为PATTERN\>, PATTERN\b
\<PATTERN\>:单词锚定;
分组与引用:
\(PATTERN\):将此PATTERN匹配到的字符当作一个不可侵害整体进行处理;
Note:分组括号中的模式匹配到的字符会被正则表达式引擎自动记录于内部的变量中,这些变量 是\1, \2, \3, ...
pat1\(pat2\)pat3\(pat4\(pat5\)pat6\)
\n:模式中第n个左括号以及与之匹配的右括号之间的模式所匹配到的字符串;(不是模式,而 是模式匹配的结果)
\1:第一组括号中的pattern匹配到的字符串;
\2:第二组括号中的pattern匹配到的字符串;
He love his lover.
He like his lover.
He love his liker.
He like his liker.
l..e.*l..er
\(l..e\).*\1r
后向引用:引用前面的括号中的模式所匹配到的字符串;
扩展正则表达式元字符:
字符匹配:
.:任意单个字符
[ ]:范围内的任意单个字符
[^ ]:范围外的任意单个字符
匹配次数:
*:任意次;
?:0次或1次;
+:1次或多次;
{m}:匹配m次;
{m,n}:至少m次,至多n次;
{0,n}
{m,}
位置锚定:
^:行首
$:行尾
\<, \b:词首
\>, \b:词尾
四·grep命令
grep家族:
grep: Global search REgular expression and Print out the line. 支持使用基本 正则表达式;
egrep:支持使用扩展正则表达式;
fgrep:不支持使用正则表达式;
grep命令:
作用:文本搜索工具,根据用户指定的”pattern(过滤条件)“对目标文本逐行进行 匹配检查;打印出符合条件的行;
模式:由文本字符及正则表达式元字符所编写的过滤条件;
grep [OPTIONS] PATTERN [FILE...]
常用选项:
--color=auto:对匹配到的文本着色后高亮显示;
-i:忽略字符大小写;
-o:仅显示匹配 到的文本自身;
-v, --invert-match:反向匹配;
-E:支持扩展的正则表达式;
-q, --quiet, --silient:静默模式,不输出任何信息;
-c,输出匹配字符串行的数量;
-n,列出所有的匹配行,并显示行号;
-h,表示查询多文件时不显示文件名;
-l,表示只列出符合匹配的文件名;
-s,表示不显示不存在或无匹配文本的错误信息;
-r,表示递归搜索
-w,表示整词匹配即以字面含义去解释模式 grep -w cer* test.pem
-x,表示匹配整行,即只有文本中有整行内容与模式匹配时
-A NUM, --after-context=NUM
-B NUM, --before-context=NUM
-C NUM, -NUM, --context=NUM
-e PATTERN, --regexp=PATTERN:多模式机制;
以上是关于正则表达式及grep的主要内容,如果未能解决你的问题,请参考以下文章