美文网首页
正则表达式入门 - shell

正则表达式入门 - shell

作者: xiaoyouPrince | 来源:发表于2019-10-24 13:28 被阅读0次

note:
学习 shell 时候,正好书中有此一节,记录一些有用的基础知识
man re_format 命令可以查看正则表达式手册

正则是什么

正则表达式是一个字符串,字符串里面的字符被称为元字符,通过元字符的组合来表达比字面上更丰富的含义。

正则表达式就是元字符组合成的字符集,用来匹配(或指定)一个模式

正则表达式内容包含:

  • 一个字符集:字符集就是表示字面意思,最简单的正则表达式只有字符集表示,没有其他元字符
  • 锚:一个锚指定了正则表达式在一行文本中要匹配的位置。如 ^$ 就是锚
  • 修饰符:它们用于展开或缩小正则表达式匹配文本行的范围,如 *,(),[],\

正则表达式的主要作用就是用来文本搜索和字符串操作,一个正则表达式匹配一个字符或一串字符。

特殊符号

* 匹配前一个字符任意多次,包括0次

"1133*"匹配11 + 一个或更多的3 + 可能的其他字符: 113, 1133, 111312, 等等.

. 匹配除了新行符之外的任意一个字符(有且只有一个)

"1133."匹配1133后面添加任意一个字符,如 11334、1133a、1133,等等.

^ 匹配一行的开头,

[^a-c] 这种结构中表示否定a-c字符集的意思

$ 匹配行尾

^$ 匹配空行

方括号 [...] 表示匹配括号中的一个字符

"[xyz]" 匹配字符x, y, 或z.

"[c-n]" 匹配从字符c到n之间的任意一个字符.

"[B-Pk-y]" 匹配从B到P 或从k到y的任意一个字符.

"[a-z0-9]" 匹配任意小写字母或数字.

"[^b-d]" 匹配除了从b到d范围内所有的字符. 这是正则表达式中反转意思或取否的一个例子。(就好像在别的情形中!字符所扮演的角色).

多个方括号字符集组合使用可以匹配一般的单词和数字模式。"[Yy][Ee][Ss]" 匹配yes, Yes, YES, yEs, 等等. "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" 匹配社会安全码(Social Security number).

反斜杠字符 \ 转义一个特殊的字符,使这个字符表示原来字面上的意思.

"$"表示了原来的字面意思"$",而不是在正则表达式中表达的匹配行尾的意思.同样,"\"也被解释成了字面上的意思"".

转义"尖角号" \<...\>用于表示单词的边界.

尖角号必须被转义,因为不这样做的话它们就表示单纯的字面意思而已.

"<the>" 匹配单词"the",但不匹配"them", "there", "other", 等等.

扩展正则表达式,增加一些元字符到上面提到的基本元字符集合中

  • ? 用来匹配0个或1个前面的字符。匹配至多一个单字符

  • + 用来匹配一个或多个前面字符,和*类似,但是不匹配0个字符的情况

  • 转义”大括号“ \{\} 表示前面正则表达式要匹配的次数

要转义是因为不转义的话大括号只是表示他们字面上的意思。这个用法只是技巧上的而不是基本正则表达式的内容。

"[0-9]{5}" 精确匹配5个数字 (从 0 到 9的数字).

  • 圆括号 () 括起一组正则表达式,它和 | 在用 expr 进行字符串提取时候很有用
  • 竖线|”或“正则操作符用于匹配一组可选的字符
 egrep 're(a|e)d' misc.txt
 
 People who read seem to be better informed than those who do not.
 The clarinet produces sound by the vibration of its reed.

小结

本文整理了正则表达式的一些基础内容,后面仍旧需要实践中更多的练习来加强!

-- end

相关文章

网友评论

      本文标题:正则表达式入门 - shell

      本文链接:https://www.haomeiwen.com/subject/heervctx.html