zoukankan      html  css  js  c++  java
  • 正则不怎么会用

    一、基本正则
    1."."(一个点)
    匹配除换行符之外的任意一个字符,例如r.t能匹配rat、ret,但是不能匹配root

    2."*"符号
    用于匹配前一个字符0次或任意多次,比如ab*,可以a、ab、abb等。比如".*"代表任意长度的不包含换行的字符
    grep 'r*t' /etc/passwd --->没有rt、rrt、rrrt,只能匹配到t
    grep 'r.*t' /etc/passwd --->查找包含字母r,后面紧跟任意长度的字符,再跟一个字母t的行

    3."{n,m}"
    匹配前面的字符n到m次
    grep 'ro{0,2}t' /etc/passwd

    匹配前面的字符n次,下例匹配的是包含root的行
    grep 'ro{2}t' /etc/passwd

    匹配前面的字符至少出现n次(包含n次)
    grep 'ro{0,}t' /etc/passwd

    4."^"
    匹配开头的字符,比如,'^ll'匹配的是以字母root开始的行
    grep '^root' /etc/passwd

    5."$"
    匹配结尾的字符,"abc$"代表以abc结尾的行
    grep 'abc$' /etc/passwd

    匹配空行"^$"

    6.[]
    匹配方括号内出现的任一字符。比如单项选择题的答案可能是A、B、C、D,用正则表达就是[ABCD]
    匹配所有的大写字母[A-Z]
    匹配所有的字母[A-Za-z],"-"做范围限定
    匹配非字母的字符[^A-Za-z],"^"是取反的意思
    匹配手机号"^1[38][0-9]{9}"

    7.
    ""是转义符
    匹配一个坐机号码:0720-66666666或者0720-66666666
    单纯用[-]匹配是不行的,因为这里的"-"是有特殊意义的,需要""转义一下,写法应该是[\-]

    8."<"和">"
    这两个符号分别用于界定左边界和右边界
    ,比如说"<hello"用以匹配以"hello"开头的单词,而"hello>"用于匹配以hello结尾的单词
    <hello>就可以精确匹配到hello这个单词

    9."d"
    d匹配一个数字,等价于[0-9],不过d在配合grep使用时需要加选项-P,因为d是一种perl兼容模式的表达式
    [root@localhost ~]# echo 123 | grep -P 'd'
    123
    [root@localhost ~]# echo 123 | grep '[0-9]'
    123

    10.""
    匹配单词的边界,比如"hello"可精确匹配"hello"单词
    [root@localhost ~]# echo "hello world" | grep "hello"
    hello


    11."B"
    匹配非单词的边界,比如helloB可以匹配"helloworld"中的"hello"
    [root@localhost ~]# echo "helloworld" | grep "helloB"
    helloworld

    12."w"
    匹配字母、数字和下划线,等价于[A-Za-z0-9]

    13."W"
    匹配非字母、非数字、非下划线、等价于[^A-Za-z0-9]

    14."s"
    匹配任何空白字符

    15."S"
    匹配任何非空白字符

    二、扩展正则
    使用扩展正则需要使用egrep命令

    1."?"
    匹配前面的一个字符0次或1次

    2."+"
    匹配前一个字符1次以上

    3."|"
    是"或"的意思

    4."()"
    该符号经常与"|"符号联合使用,用于枚举一些列可替换的字符。
    比如要匹配"hood"、"hard"、"hold"
    h(ar|oo|ol)d

    三、通配符
    "{}"
    拥有匹配所有括号内包含的以逗号隔开的字符
    第一种方式:ls {A,B,C,D}.doc
    第二种方式:ls [A-C].doc

    列出以字母AB或者CD开头,以.doc结尾的文件,就只能用"{}"

    "!"
    [!A]代表非A

  • 相关阅读:
    【BUG修复】视频综合管理平台EasyNVS首页设备接入情况显示与实际不符如何调整?
    数据库连接池
    手写SORM(simple object relation mapping)框架3—DBManager和TableContext的设计
    jdbc—总结
    jdbc—CLOB和BLOB
    jdbc—时间处理
    jdbc—事务
    递归(最大公约数)
    C++ return
    函数参数
  • 原文地址:https://www.cnblogs.com/liangjiongyao/p/9294264.html
Copyright © 2011-2022 走看看