正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
正则表达
1.1 ^str 以什么字符串开头
1.2 str$ 以什么字符串结尾
过滤出来空白行,必须是空白行(多个空格都不行)
1.3 “.” 匹配单个字符
1.4 “*”表示之前的字符连续出现任意次数(包括0次)
正则表达式的贪婪性,匹配到最后一个不能匹配的字符
1.5 <word 查找以word字符串开头的单词,所在的行
1.6 word >查找以word字符串结束的单词,所在的行
1.7 <word>查找包括word这个单词的行
1.8 既能表示词首,也能表示词尾,匹配单词边界
1.9 B 匹配“非单词边界”B在前面就是不匹配以这个字符开头的行
1.10 x{M} 重复字符x,M次
1.11 x{M,} 重复字符x,最少M次
1.12 x{M,n} 重复字符x,最少M次,最多n次
1.13 ".*"匹配任意字符
1.14 [] 匹配一个指定范围的字符
1.15 [^ ] 匹配一个不存在这个范围内的字符
1.15.1 grep的应用
grep的宗旨:显示一切的匹配行,这句话的是理解这个选项的重中之重
1.15.2 awk的用法
注意格式的写法
[[email protected]_50 tmp]# awk ‘/[^ab]/‘ 1.txt
aabbcc
aaeebb
aaffgg
bbccee
abcc
综合用法:
[[email protected]_50 tmp]# cat awk.txt
aab bcc
cc bb
aaa aa
[[email protected]_50 tmp]# awk ‘/[^a]/{print $2}‘ awk.txt
bcc
bb
aa 这一行也匹配出来了,是因为“空格”也属于非a的字符,也匹配上了
[[email protected]_50 tmp]# awk ‘/[^a ]/{print $2}‘ awk.txt 我们取非a和非“空格”的
bcc
bb
1.15.3 sed的用法
[[email protected]_50 tmp]# sed -n ‘/[^ab]/p‘ 1.txt
aabbcc
aaeebb
aaffgg
bbccee
abcc
一般单纯的过滤字符串的时候我们配合-n和p使用,这样就能显示出我们想要行的结果
1.16 匹配连续字符串出现的次数
1.17 正则的引用
所在的位置就看左侧的"("所在的位置,在第一个就是1,第二个就是2,嵌套引用也是这个道理
1.18 转义字符,专业人士称为“撬棍”
1.19 总结:
1.19.1 常用符号
. 表示任意单个字符。
* 表示前面的字符连续出现任意次,包括0次。
.* 表示任意长度的任意字符,与通配符中的*的意思相同。
表示转义符,当与正则表达式中的符号结合时表示符号本身。
[ ]表示匹配指定范围内的任意单个字符。
[^ ]表示匹配指定范围外的任意单个字符。
1.19.2 次数匹配相关
? 表示匹配其前面的字符0或1次
+ 表示匹配其前面的字符至少1次,或者连续多次,连续次数上不封顶。
{n} 表示前面的字符连续出现n次,将会被匹配到。
{x,y} 表示之前的字符至少连续出现x次,最多连续出现y次,都能被匹配到,换句话说,只要之前的字符连续出现的次数在x与y之间,即可被匹配到。
{,n} 表示之前的字符连续出现至多n次,最少0次,都会陪匹配到。
{n,}表示之前的字符连续出现至少n次,才会被匹配到。
1.19.3 位置边界匹配相关
^:表示锚定行首,此字符后面的任意内容必须出现在行首,才能匹配。
$:表示锚定行尾,此字符前面的任意内容必须出现在行尾,才能匹配。
^$:表示匹配空行,这里所描述的空行表示"回车",而"空格"或"tab"等都不能算作此处所描述的空行。
^abc$:表示abc独占一行时,会被匹配到。
<或者 :匹配单词边界,表示锚定词首,其后面的字符必须作为单词首部出现。
>或者 :匹配单词边界,表示锚定词尾,其前面的字符必须作为单词尾部出现。
B:匹配非单词边界,与正好相反。
1.19.4 分组与后向引用
( ) 表示分组,我们可以将其中的内容当做一个整体,分组可以嵌套。
(ab) 表示将ab当做一个整体去处理。
1 表示引用整个表达式中第1个分组中的正则匹配到的结果。
2 表示引用整个表达式中第2个分组中的正则匹配到的结果。
参考:朱哥博客http://www.zsythink.net/archives/tag/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性