学习笔记(8)——正则表达式

        正则表达式就是处理字符串的方法(已行为单位)。

        Linux系统中,语系对正则表达式的使用是有影响的。就编码顺序而言,当LANG=C时:0-9A-Za-z;当LANG=zh_CN时:0-9aA-zZ。这一差异使得正则表达式在使用“[n1-n2]”时会出现问题。


符号表示:在不确定语系或是不方面更改语系时,建议使用这种表示符号代替[n1-n2]的使用方式,以免发生错误。

       [:alnum:]:英文大小写字母以及数字。

       [:alpha:]:英文大小写字母。

       [:digit:]:数字。

       [:lower:]:小写字母。

       [:upper:]:大写字母。

       [:blank:]:空格键或TAB键。

       [:cntrl:]:键盘上面的控制键,包括CR,LF,TAB,Del等。

       [:graph:]:除了空格键和TAB键以外的所有按键。

       [:print:]:可以被打印出来的字符。

       [:punct:]:标点符号。

       [:space:]:会产生空白的字符,包括TAB等。

       [:xdigit:]:十六进制的数字类型。


正则表达式的符号:暂时与grep命令(笔记7中介绍过)连用,用作筛选。

        ^word:^字符表示行首,即word字符在行首出现。如:grep -n '^the' test   表示显示test文件中行首为the的行。(-n 参数是显示行编号)

        word$:$字符表示行尾,即word字符在行尾出现。如:grep -n '\.$' test   表示显示test文件中行尾为“.”的行。

        \:转义字符

        .:代表一个确定存在的任意字符。如:grep -n 't.st' test   表示显示test文件中含有“t*st”的行,*可以是任意字符,但必须存在,不能是“tst”。

        *:代表0到无穷多个前一个字符。如:grep -n 'tes*t' test   表示显示test文件中含有“te(s)t”的行,其中字符s可以是任意数量的。

        [list]:代表从字符集合中选择一个字符。如:grep -n 'te[asdf]t' test   表示显示test文件中含有“teat”、“test”、“tedt”、“teft”的行。

        [n1-n2]:代表在范围内选取一个字符。如:grep -n 'te[a-z]t' test   表示显示test文件中含有“te(S)t”的行,其中字符S可以是小写字母中的任意一个。注意:这种用法最好在LANG=C的语系中使用。

        [^list]:代表从不在字符集合中的一个字符。如:grep -n 'te[asdf]t' test   表示显示test文件中含有含有“te(s)t”的行,其中不包括含有“teat”、“test”、“tedt”、“teft”的行。

        \{n,m\}:本意为{m,n},但在bash中“{”和“}”是有特殊含义的字符,因此要用\转义字符进行转义。表示:连续n到m个前一个字符,如果m缺省,则表示n到无穷多个;如果m和逗号都缺省,则表示n个前一个字符。如: grep -n 'tes\{1,3\}t' test   表示显示test文件中含有“test”、“tesst”、“tessst”的行。


扩展正则表达式:配合egrep使用,或者grep -E。

        +:重复一个或一个以上的前一个字符。

        ?:重复零个或一个的前一个字符。

        |:用或的方式找出数个字符串。如:egrep -n 'test|at' test    表示显示test文件中含有“test”或“at”的行。

        ():找出组字符串。如:egrep -n 'g(la|oo)d' test  表示显示test文件中含有“glad”或“good”的行。

        ()+:多个重复组的判别。如egrep -n 'A(test)+B' test  表示显示test文件中以A开头,以B结尾,中间含有一个或一个以上“test”的字符串的所在行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值