正则表达式——简洁版

正则表达式

  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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值