美文网首页
正则表达式入门 - 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