• Linux环境下常用regexp的使用


    正则表达式

    REGular EXPression   的简写
    元字符

    匹配次数

    位置锚定

    分组

    --------------------------------------
    元字符
    . 匹配任意单个字符

    [] 匹配指定范围内任意单个字符


    [^] 匹配指定范围外的
    [:space:] 空白字符
    [:punct:] 标点字符
    [:lower:] 小写字母
    [:upper:] 大写字母
    [:alpha:] 大小写字母
    [:digit:] 数字
    [:alnum:] 数字和大小写字母


    匹配次数(贪婪模式)

    * 匹配其前面的字符任意次
    a*b b前面a出现任意次数
    a.*b a开头b结束
    .* 任意长度任意字符

    ? 匹配其前面的字符1次或0次 意思是这个字符可有可无
    a?b
    {m,n} 匹配其前面的字符至少m次 至多n次
    {1,} 至少一次
    {,3} 至多3次
    a.{1,3}b a和b之间至少有一个最多有三个字符

    位置锚定

    ^ 锚定行首 此字符后面的任意内容必须出现在行首

    $ 锚定行尾 此字符前面的任意内容必须出现在行尾
    grep 'b..h$' /etc/passwd
    ^$ 空白行
    < 其后面的任意字符必须作为单词首部出现
    > 其前面的任意字符必须作为单词尾部出现 这个符号的另一种写法


    分组
    ()
    (ab)* ab 可以出现任意次
    1 第一个左括号以及与之对应的组内容

    grep '(l..e).*1' test3.txt


    练习: 分析/etc/inittab 文件中如下文本中前两行的特征(每一行中出现在数字必须相同)请写出可以精确找到类似两行的模式
    11:1:wait:/etc/rc.d/rc 1

    13:1:wait:/etc/rc.d/rc 3

    grep '^1([0-9]):1.*1$' /etc/inittab

    grep 使用基本正则表达式定义的模式来过滤文本的命令


    ----------------------------------------------------
    扩展正则表达式

    字符匹配
    . [] [^]

    次数匹配
    *
    ? 无需反斜杠了
    + 匹配其前面的字符至少一次 {1,}
    {m,n} 不需要反斜线

    位置锚定
    ^
    $
    <
    >

    分组
    () 不用反斜杠
    1,2

    或者
    a|b or的意思
    C|cat 整个左边和右边
    Cat或者cat 错
    C或者cat 对

    grep -E 'C|cat' text.txx

    {3}重复三次

    fgrep 不支持正则表达式 特别快

  • 相关阅读:
    android 的权限
    做android遇到有问题有感
    帮人写的 论文 C语言的 学生管理系统
    android 服务器的 mysql 查询悲剧
    android开发遇到的问题
    想和各位技术高人材交流技术特建了相关的QQ群
    Invalid token '44' in input string
    设置PLSQL Developer访问本机64位Oracle
    SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作……错误:3219……”的解决方法
    C#的JSON开发包 LitJSON
  • 原文地址:https://www.cnblogs.com/manue1/p/4477178.html
Copyright © 2020-2023  润新知