zoukankan      html  css  js  c++  java
  • Unix Regex

    基本元字符集(Metacharacters)及其含义 

    ^ 只只匹配行首 

    $ 只只匹配行尾 

    * 只一个单字符后紧跟*,匹配0个或多个此单字符 

    [ ] 只匹配[ ]内字符。可以是一个单字符,也可以是字符序列。可以使用- 

    表示[ ]内字符序列范围,如用[ 1 - 5 ]代替[ 1 2 3 4 5 ] 

    / 只用来屏蔽一个元字符的特殊含义。因为有时在s h e l l中一些元字符有 

    特殊含义。/可以使其失去应有意义 

    . 只匹配任意单字符 

    pattern/{n/} 只用来匹配前面p a t t e r n出现次数。n为次数 

    pattern/{n,/}  只含义同上,但次数最少为n 

    pattern/{n,m/} 只含义同上,但p a t t e r n出现次数在n与m之间 

    边界匹配( Boundary Matchers)

    如果要匹配所有空行,执行以下操作: 

    ^ $ 

    具体分析为匹配行首,又匹配行尾,中间没有任何模式,因此为空行。 

    如果只返回包含一个字符的行,操作如下: 

    ^ . $ 

    使用*匹配字符串中的单字符或其重复序列 

    使用此特殊字符匹配任意字符或字符串的重复多次表达式。例如: 

    compu*t 

    将匹配字符u一次或多次: 

    computer

    computing

    compuuuuuuut

    使用/屏蔽一个特殊字符的含义

    如果要在正则表达式中匹配以*.pas结尾的所有文件,可做如下操作: 

    /*/.pas 

    即可屏蔽字符*的特定含义。

    使用[]匹配一个范围或集合

    使用[ ]匹配特定字符串或字符串集,可以用逗号将括弧内要匹配的不同字符串分开,但并 

    不强制要求这样做(一些系统提倡在复杂的表达式中使用逗号),这样做可以增加模式的可读性。 

    使用“-”表示一个字符串范围,表明字符串范围从“-”左边字符开始,到“-”右边字 符结束。

    假定要匹配任意一个数字,可以使用: 

    [0123456789] 

    然而,通过使用“-”符号可以简化操作: 

    [0-9] 

    或任意小写字母 

    [a-z] 

    要匹配任意字母,则使用: 

    [A-Za-z]

    注意^符号的使用,当直接用在第一个括号里,意指否定或不匹配括号里内容。 

    [^a-zA-Z] 

    匹配任一非字母型字符,而 

    [^0-9] 

    匹配任一非数字型字符。 

    使用/{/}匹配模式结果出现的次数 

    请看第一个例子,匹配字母A出现两次,并以B结尾,操作如下: 

    A/{2/}B 

    匹配值为AAB 

    匹配A至少4次,使用: 

    A/{4,/}B 

    可以得结果AAAAB或AAAAAAAB,但不能为AAAB。

    经常使用的正则表达式举例

    ^ 对行首

    $ 对行尾

    ^[the] 对以the开头行

    [Ss]igna[lL] 对匹配单词signal、signaL,Signal、SignaL

    [Ss]igna[lL]/. 对同上,但加一句点

    [mayMAY] 对包含may大写或小写字母的行

    ^USER$ 对只包含USER的行

    [tty]$ 对以tty结尾的行

    /. 对带句点的行

    ^d..x..x..x 对用户、用户组及其他用户组成员有可执行权限的目录

    ^[^l] 对排除关联目录的目录列表

    [.*0] 对0之前或之后加任意字符

    [000*] 对000或更多个

    [iI] 对大写或小写I

    [iI][nN] 对大写或小写i或n

    [^$] 对空行

    [^.*$] 对匹配行中任意字符串

    ^......$ 对包括6个字符的行

    [a-zA-Z] 对任意单字符

    [a-z][a-z]* 对至少一个小写字母

    [^0-9/$] 对非数字或美元标识

    [^0-0A-Za-z] 对非数字或字母

    [123] 对1到3中一个数字

    [Dd]evice 对单词device或Device

    /^q 对以^q开始行

    ^.$ 对仅有一个字符的行

    ^/.[0-9][0-9] 对以一个句点和两个数字开始的行

    '"Device"' 对单词device

    De[Vv]ice/. 对单词Device或device

    [0-9]/{2/}-[0-9]/{2/}-[0-9]/{4/} 对日期格式dd-mm-yyyy

    [0-9]/{3/}/.[0-9]/{3/}/.[0-9]/{3/}/.[0-9]/{3/} 对IP地址格式nnn.nnn.nnn.nnn

    [^.*$] 对匹配任意行

    More info about Java Regex

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    Hadoop及HIVE学习宝典收集
    【iOS知识学习】_int、NSInteger、NSUInteger、NSNumber的差别和联系
    mysql 连接慢的问题
    CF704D Captain America
    常用流
    流的概念及基本分类
    是否可从一个static方法内发出对非static方法的调用?
    hashCode方法的作用?
    ClassLoader如何加载class?
    class.forName的作用?
  • 原文地址:https://www.cnblogs.com/significantfrank/p/4875859.html
Copyright © 2011-2022 走看看