zoukankan      html  css  js  c++  java
  • shell之正则表达式

    一、正则表达式简介

    正则表达式,也成为正规表示法、常规表示法,是一种字符模式,用于在查找过程中匹配指定的字符。

    许多程序设计语言都支持利用正则表达式进行字符串操作。

    二、正则表达式可以做什么?

    1)匹配邮箱、身份证号、手机号、银行卡号等;
    2)匹配某些特定字符,做特定处理等;

    三、第一类正则表达式

    3.1 正则中普通常用的元字符

    元字符 功能 备注
    . 匹配除了换行符以外的任意单个字符
    * 前导字符出现0次或连续多次
    .* 任意长度字符 ab.*
    ^ 行首(以...开头) ^root
    $ 行尾(以...结尾) bash$
    ^$ 空行
    [] 匹配括号里任意单个字符或一组单个字符 [abc]
    [^] 匹配不包含括号里任一单个字符或一组单个字符 [^abc]
    [1] 匹配以括号里任意单个字符或一组单个字符开头 [2]
    ^[^] 匹配不以括号里任意单个字符或一组单个字符开头 ^[^abc]

    3.2 正则中其他常用元字符

    元字符 功能 备注
    < 取单词的头
    > 取单词的尾
    < > 精确匹配
    {n} 匹配前导字符连续出现n次
    {n,} 匹配前导字符至少出现n次
    {n,m} 匹配前导字符出现n次与m次之间
    ( ) 保存被匹配的字符
    d 匹配数字(grep -P [0-9]
    w 匹配字母数字下划线(grep -P [a-zA-Z0-9_]
    s 匹配空格、制表符、换页符(grep -P [ ]

    3.3 扩展正则常用元字符

    扩展元字符 功能 备注
    + 匹配一个或多个前导字符 bo+ 匹配boo、 bo
    ? 匹配零个或一个前导字符 bo? 匹配b、 bo
    | 匹配a或b
    () 组字符(看成整体) (my|your)self:表示匹配myself或匹配yourself
    {n} 前导字符重复n次
    {n,} 前导字符重复至少n次
    {n,m} 前导字符重复n到m次

    3.4 第二类正则

    表达式 功能 示例
    [:alnum:] 字母与数字字符 [[:alnum:]]+
    [:alpha:] 字母字符(包括大小写字母) [[:alpha:]]{4}
    [:blank:] 空格与制表符 [[:blank:]]*
    [:digit:] 数字 [[:digit:]]?
    [:lower:] 小写字母 [[:lower:]]{4,}
    [:upper:] 大写字母 [[:upper:]]+
    [:punct:] 标点符号 [[:punct:]]
    [:space:] 包括换行符,回车等在内的所有空白 [[:space:]]+

    3.5 正则元字符一览表

    元字符 功能 示例
    * 前导字符出现0次或者连续多次 ab* abbbb
    . 除了换行符以外,任意单个字符 ab. ab8 abu
    .* 任意长度的字符 ab.* adfdfdf
    [] 括号里的任意单个字符或一组单个字符 [abc][0-9][a-z]
    [^] 不匹配括号里的任意单个字符或一组单个字符 [^abc]
    [3] 匹配以括号里的任意单个字符开头 [4]
    ^[^] 不匹配以括号里的任意单个字符开头
    ^ 行的开头 ^root
    $ 行的结尾 bash$
    ^$ 空行
    {n}和{n} 前导字符连续出现n次 [0-9]{3}
    {n,}和{n,} 前导字符至少出现n次 [a-z]{4,}
    {n,m}和{n,m} 前导字符连续出现n-m次 go{2,4}
    <> 精确匹配单词 <hello>
    () 保留匹配到的字符 (hello)
    + 前导字符出现1次或者多次 [0-9]+
    ? 前导字符出现0次或者1次 go?
    | ^root|^ftp
    () 组字符 (hello|world)123
    d perl内置正则 grep -P d+
    w 匹配字母数字下划线

    1. ↩︎

    2. abc ↩︎

    3. ↩︎

    4. abc ↩︎

    *************** 当你发现自己的才华撑不起野心时,就请安静下来学习吧!***************
  • 相关阅读:
    JavaScript事件详解
    JavaScript事件
    十六进制转十进制原理
    java:数组复制
    java:数组扩容
    MySQL---Day2
    Pyhton学习——Day47
    MySQL---Day1
    Pyhton学习——Day46
    Someing-About-Work
  • 原文地址:https://www.cnblogs.com/lvzhenjiang/p/14199006.html
Copyright © 2011-2022 走看看