博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux正则表达式基础入门+扩展
阅读量:2178 次
发布时间:2019-05-01

本文共 4813 字,大约阅读时间需要 16 分钟。

最近在看正则表达式部分的东西,有些东西记录下.

  1. “ .”(一个点)符号. 点符号用于匹配除换行符之外的任意一个字符。例如:r.t可以匹配rot、rut
  2. “ * ”符号. *符号用于匹配前一个字符0次或任意多次
  3. “ {n,m}”符号
    3.1 {n} 匹配前面的字符n次 grep 'ro\{2\}t' 匹配root
    3.2 {n,} 匹配前面的字符至少n次以上(含n次) grep 'ro\{0,\}t 匹配以r开头,t结尾, 包含o 0到多次'
    3.3 {n,m} 匹配前面的字符n到m次.
  4. “ ^”符号, 这个符号用于匹配开头的字符, “^root”匹配的是以字母root开始的行
  5. “ $”符号, “$”用于匹配尾部, “abc$”代表的是以abc结尾的行
  6. “ []”符号, 用于匹配方括号内出现的任一字符. 单项选择题的答案,可能是A、B、C、D选项中的任意一种,用正则表达式表示就是[ABCD]。如果遇到比较大范围的匹配,比如说要匹配任意一个大写字母,就需要使用“-”号做范围限定,写成[A-Z],要匹配所有字母则写成[A-Za-z]。一定要注意,这里“-”的作用不是充当一个字符
  7. “ \”符号, 这个符号代表转义字符,我们可以对很多特殊的字符进行“转义”,让它只代表字符本身,因此这里的写法就应该是[\ \-].
  8. “ <”符号和“>”符号, 这两个符号分别用于界定单词的左边界和右边界. “\<hello”用于匹配以“hello”开头的单词;而“hello\>”则用于匹配以“hello”结尾的单词. 还可以使用它们的组合—“\<\>”用于精确匹配一个字符串。所以“\<hello\>”可精确匹配单词hello
  9. “ \d”符号, 匹配一个数字,等价于[0-9].
  10. “ \b”符号, 匹配单词的边界. “\bhello\b”可精确匹配“hello”单词。
  11. “ \B”符号, 匹配非单词的边界. hello\B可以匹配“helloworld”中的“hello”
  12. “ \w”符号, 匹配字母、数字和下划线,等价于[A-Za-z0-9].
  13. “ \W”符号, 匹配非字母、非数字、非下划线,等价于[^A-Za-z0-9]。
  14. “ \n”符号, 匹配一个换行符。
  15. “ \r”符号, 匹配一个回车符。
  16. “ \t”符号, 匹配一个制表符。
  17. “ \f”符号, 匹配一个换页符。
  18. “ \s”符号, 匹配任何空白字符。
  19. “ \S”符号, 匹配任何非空白字符。
    扩展正则表达式.
  20. “?”符号, “?”符号用于匹配前一个字符0次或1次. “ro?t”仅能匹配rot或rt。
  21. “+”符号, “+”符号用于匹配前一个字符1次以上. “ro+t”就可以匹配rot、root等
  22. “|”符号, “|”符号是“或”的意思,即多种可能的罗列,彼此间是一种分支关系.
  23. “()”符号, “()”符号通常需要和“|”符号联合使用,用于枚举一系列可替换的字符.
    通配符
  24. “*”符号, 代表0个或多个字符.
  25. “?”符号, 代表的是任意一个字符.
  26. “{}”符号, “{}”可拥有匹配所有括号内包含的以逗号隔开的字符.
  27. “^”符号和“!”符号 , 这两个符号往往和“[]”一起使用,当出现在“[]”中的时候,代表取反。所以[^A](或[!A])代表不是A。
    示例:
    为了演示grep命令的用法, 首先创建一个文件RegExp.txt,文件内容如下所示:
[hadoop@bdata01 shell ]$ cat RegExp.txt ----------TEXT BEGIN-----------good morning teacherhello world is a scriptgold sunshine looks beautifulgolden time fliesgod bless mewhat a delicious foodthey teast Goodyou fell gladwrong word goooodwrong word g10dwrong word g12dwrong word g13dwww.helloworld.comwww@helloworld@comUpper case100% means purephp have a gd module-----------TEXT END----------------#1. 搜索含有good的单词的行, 注意: grep默认是区分大小写的,所以这里只会打印有good的行[hadoop@bdata01 shell ]$ grep 'good' RegExp.txt good morning teacher#2. 搜索含有good单词的行,不区分大小写[hadoop@bdata01 shell ]$ grep -i 'good' RegExp.txt good morning teacherthey teast Good#3. 统计不含good单词的行,不区分大小写[hadoop@bdata01 shell ]$ grep -ivc 'good' RegExp.txt 19#4. 搜索以good开头的行[hadoop@bdata01 shell ]$ grep '^good' RegExp.txt good morning teacher#5. 搜索以Good结尾的行[hadoop@bdata01 shell ]$ grep 'Good$' RegExp.txt they teast Good#6. 搜索空行行数[hadoop@bdata01 shell ]$ grep -c '^$' RegExp.txt 2#7. 搜索包含good 和 Good的行[hadoop@bdata01 shell ]$ grep '[Gg]ood' RegExp.txt good morning teacherthey teast Good#8. 搜索一个包含ood的行,但不能是good 和 Good,使用反选功能[hadoop@bdata01 shell ]$ grep '[^Gg]ood' RegExp.txt what a delicious foodwrong word gooood#9. 搜索一个以g开头,中间两个任意字符,结尾是d的行[hadoop@bdata01 shell ]$ grep 'g..d' RegExp.txt good morning teachergold sunshine looks beautifulgolden time fliesyou fell gladwrong word g10dwrong word g12dwrong word g13d#10. 搜索一个以g或者G开头,中间两个任意字符,结尾是d的行[hadoop@bdata01 shell ]$ grep '[Gg]..d' RegExp.txt good morning teachergold sunshine looks beautifulgolden time fliesthey teast Goodyou fell gladwrong word g10dwrong word g12dwrong word g13d#11. 搜索以g或G开头,中间是1或者o,第三个字符是任意字符,最后以d结尾的行[hadoop@bdata01 shell ]$ grep '[Gg][1o].d' RegExp.txt good morning teachergold sunshine looks beautifulgolden time fliesthey teast Goodwrong word g10dwrong word g12dwrong word g13d#12. 搜索含有gold的行, 精确匹配[hadoop@bdata01 shell ]$ grep '\
' RegExp.txt gold sunshine looks beautiful[hadoop@bdata01 shell ]$ grep '\bgold\b' RegExp.txt gold sunshine looks beautiful#13. 搜索以g开头,中间包含0到无限个o,以d结尾的行[hadoop@bdata01 shell ]$ grep go*d RegExp.txt good morning teachergod bless mewrong word goooodphp have a gd module#14. 搜索以g开头,中间包含字符,以d结尾的行[hadoop@bdata01 shell ]$ grep 'g.*d' RegExp.txt good morning teachergold sunshine looks beautifulgolden time fliesgod bless meyou fell gladwrong word goooodwrong word g10dwrong word g12dwrong word g13dphp have a gd module#15. 搜索把o错写成数字的行[hadoop@bdata01 shell ]$ grep 'g1[0-9]d' RegExp.txt wrong word g10dwrong word g12dwrong word g13d#16. 搜索包含www.helloworld.com的行[hadoop@bdata01 shell ]$ grep 'www.helloworld.com' RegExp.txt www.helloworld.comwww@helloworld@com这里需要对.进行转义[hadoop@bdata01 shell ]$ grep 'www\.helloworld\.com' RegExp.txt www.helloworld.com#17. 搜索一个将good拼错,写了多个额o的行#搜两个o及以上的行[hadoop@bdata01 shell ]$ grep 'go\{2,\}' RegExp.txt good morning teacherwrong word gooood#搜有四个o的行[hadoop@bdata01 shell ]$ grep 'go\{4\}' RegExp.txt wrong word gooood#18.搜索g和d之间至少有一个o的行[hadoop@bdata01 shell ]$ egrep 'go+d' RegExp.txt good morning teachergod bless mewrong word gooood#19. 搜索g和d之间只有0个或者1个o的行[hadoop@bdata01 shell ]$ egrep 'go?d' RegExp.txt god bless mephp have a gd module#20. 搜索有glad或者 gold的行[hadoop@bdata01 shell ]$ egrep 'glad|gold' RegExp.txt gold sunshine looks beautifulgolden time fliesyou fell glad[hadoop@bdata01 shell ]$ egrep 'g(la|ol)d' RegExp.txt gold sunshine looks beautifulgolden time fliesyou fell glad

参考《Linux系统命令及shell脚本实践指南》

转载地址:http://dkjkb.baihongyu.com/

你可能感兴趣的文章
(PAT 1143) Lowest Common Ancestor (二叉查找树的LCA)
查看>>
(PAT 1061) Dating (字符串处理)
查看>>
(PAT 1118) Birds in Forest (并查集)
查看>>
数据结构 拓扑排序
查看>>
(PAT 1040) Longest Symmetric String (DP-最长回文子串)
查看>>
(PAT 1145) Hashing - Average Search Time (哈希表冲突处理)
查看>>
(1129) Recommendation System 排序
查看>>
PAT1090 Highest Price in Supply Chain 树DFS
查看>>
(PAT 1096) Consecutive Factors (质因子分解)
查看>>
(PAT 1019) General Palindromic Number (进制转换)
查看>>
(PAT 1073) Scientific Notation (字符串模拟题)
查看>>
(PAT 1080) Graduate Admission (排序)
查看>>
Play on Words UVA - 10129 (欧拉路径)
查看>>
mininet+floodlight搭建sdn环境并创建简答topo
查看>>
【linux】nohup和&的作用
查看>>
Set、WeakSet、Map以及WeakMap结构基本知识点
查看>>
【NLP学习笔记】(一)Gensim基本使用方法
查看>>
【NLP学习笔记】(二)gensim使用之Topics and Transformations
查看>>
【深度学习】LSTM的架构及公式
查看>>
【python】re模块常用方法
查看>>