正则表达式+grep 入门知识整理

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xiong3110/article/details/88016130

此文为一堂基础知识课(大神请无视)。主要是了解下正则到底是什么,有什么特点,又有何用。

正则表达式是一个用来描述或匹配一系列符合某个规则的字符串的单个字符串。(很绕口吧,其实它就是一堆有规则的字符集合而已)

其特点大致归纳如下:

  • 正则有三类,分为 basic、extended、perl。grep默认使用basic。
  • 正则区分大小写。
  • 中括号[ ]里是没有元字符的,都代表本身的含义,例如[.]就表示匹配一个点.的意思。
  • 小括号 () 可以将其中的内容作为一个整体(但是默认的基本正则不支持唉)。
  • 正则使用的字符其实并不多,也不难记,只是可读性太差。

科普一下基础知识。(remember it)

元字符

元字符是构造正则表达式的一种基本元素。

先记住几个常用的:

元字符 说明
. 匹配除换行符以外的任意字符
^ 匹配行的开始,格式:^+char, 如 ^hello
$ 匹配行的结束,格式:char+$, 如  world$
\b 或\< 锚定单词的词首 和 词尾
\w 匹配字母或数字或下划线或汉字

例如:

 

 'h.llo' 和 'h\wllo' 效果一样,它两都可以表示一个字符。比如当你想搜索一个字串,但是忘记了其中一个字母是什么,这时你可以用 . 或 \w 顶上。

\b 锚定单词的词首或词尾,想要精确匹配单词则需前后都锚定。如下:

对于单词的间隔符,只要它不包含数字、字母、汉字、下划线 这四个标识符号,其它的都可以简单认定是间隔符,而\b 匹配的就是这四个,可以说 \b 为单词而生。

^$ 可以输出空白行。

重复限定 修饰符

去掉重复的语句,使你的表达式更简洁。它们跟在需要修饰的字符屁股后面。

语法 说明
* 重复零次或更多次
\? 重复零次或一次
\{n\}   \{n,\}    \{n,m\} 重复n次 、重复n次或更多次、重复n到m次

基本正则 不能直接使用 问号 和 ()和{ }等等,需要加转义字符 \ 才行。

 

字符串

[]    //表示匹配其中的任一字符,相当于或。连字符'-'表示范围。
$ echo "hello123" | grep [a-g]

排除型字符组:运算符^ 在括号内则表示匹配一个未列出的字符,和取反效果类似。

$ echo "hello123" | grep [^e2]

 

$ echo "hello123hi" | grep h[^e]

 

grep

一种强大的文本搜索工具,linux系统下分为三类:grep、egrep、fgrep .

本人常用的参数有 -rnw

...

参考:

 https://www.cnblogs.com/kissdodog/archive/2013/04/22/3036649.html

https://www.cnblogs.com/newsouls/p/3781812.html

https://www.cnblogs.com/flyor/p/6411140.html

展开阅读全文

没有更多推荐了,返回首页