正则表达式——简洁版

来源:互联网 发布:解析的域名怎么弄 编辑:程序博客网 时间:2024/06/07 05:23

正则表达式

  1. 匹配行和单词
    元字符是一个匹配行开头的锚
    为了搜索那些以“Harley”开头的行,可以使用grep '^Harley' file
  2. 匹配行末尾的锚是元字符$
    为了搜索那些以“Harley”结尾的行,使用grep 'Harley$' file
  3. 两个元字符结合使用
    搜索整行就是一个单词为“Harley”的行,使用grep '^Harley$' file
    查询空行,grep '^$' flle
  4. 匹配一个单词的开头和结尾
    • 搜索以以字符串“kn”开头的单词,grep '\<kn' file,结尾单词为ow,grep 'ow>\'
    • 搜索完整单词“know”,grep '\<know\>' file
    • 该命令可选取:I know who you are,and I saw what you did
    • 不选取:Who knows what evil lurks in the hearts of men?
      为了方便,可以使用\b作为\<和>的替代锚
  5. 匹配字符
    • 在正则表达式中,元字符 . 匹配任何单个字符,新行字符除外。
      搜索一个单词,开头开头为“har”,后面跟随两个任意字符,在后跟一个字母“y”,使用grep 'har..y' file
    • . 匹配的任意字符,而你希望匹配一个特定的字符。在这种情形下,可以通过将字符放在[]中来指定希望搜索到的字符。这样的结构就称为一个字符类
      • 例如,搜索当前目录下的源文件中包含字母”D”开头后面跟着“o”或者“e”的文件。ls | grep 'D[oe]',匹配结果Desktop Documents Downloads

提示:理解复杂正则表达式的技巧就是记住每个字符类——不管它看上去是多么复杂——只表示一个单独的字符罢了。

  1. 预定义字符类:范围
    有一些字符集是比较常见的,因此它们被冠以相应的名称,从而方面使用。这些字符集称为预定义字符类,以下为预定义字符类表
类 含义 类似于 [:lower:] 小写字母 a-z [:upper:] 大写字母 A-Z [:alnum:] 大小写字母 A-Za-z [:digit:] 数字 0-9 [:alnum:] 大小写字母、数字 [:punct:] 标点符号 - [:blank:] 空白或制表符 -

预定义字符类的使用比较直接,但是使用是要加上双括号。例如:查询当前文件夹下包括数字的文件名,使用ls | grep [[:digit:]]其效果和ls | grep [0-9]作用相同。
7. 重复运算符
为了一次匹配多个字符,可以使用重复运算符

元字符 含义 * 一个*可以匹配前面字符的0次或多次的出现 + 匹配1个或多个字符 ? 匹配某个实例0次或1次

最后一个重复运算符,是通过方括号创建除所谓的限定来指定字符出现的次数。

形态 含义 {n} 正好匹配n次 {n,} 至少匹配n次 {m,} 最多匹配m次 [非标准,不属于POSIX1003.2B标准,可能在一些程序中无法使用] {n,m} 至少匹配n次,最大匹配m次

到目前为止,我们只对单个的字符使用重复运算符。如果将多个字符用圆括号,也可以对多个字符使用重复运算符。这样的模式称为
例如:为了连续匹配字符串”xyz“5次,可以是哦那个下述两种正则表达式。xyzxyzxyzxyzxyz(xyz){5}
最后一个重复运算符是 | 字符,它允许使用交变,也就是说可以匹配这一个,也可以匹配那一个。没研究出来,( ╯□╰ )。

0 0
原创粉丝点击