精通正则表达式
一、定义 1. 正则文法 《离散数学及其应用》一书中,对正则文法做了如下的描述。 形如 A—>aB或A—>a,其中A,B是非终结符,a是终结符。 正则文法之所一成为正则文法因为文法生成的语言是正则的。 2. 正则集合 正则集合是这样的集合:从空集,空串,单字符串开始,以任意顺序通过链接、并和克莱因闭包运算形成的。 3. 克莱因定理 一个集合是正则的,当且仅当它可由一个有限状态自动机识别。 二、正则表达式
1. 纯文本 区分大小写,可以包含空格和数字。 2. 特殊字符 特殊字符包含一下几个. * [ ] ^ $ { } + ? | ( ) 共十四个。不能在字符串中使用,要想使用,需要用转义字符 正斜杆虽然不是特殊字符。但是在使用的时候也需要转义。 3. 定位符 (1)从头开始:脱字符(^)定义从数据流中文本开头的模式。 $ echo "this is a book" | sed -n '/^book/p' $ echo "book is mine" | sed -n '/^book/p' book is mine ^定位符 在各个新数据行的开头检查模式,不是整个文本的开头。
(2)查找结尾:$ may be like this. sed -n '^hello world$/p' data5 4. 点字符
5. 字符类 字符类用[]中括号扩起来,代表其中之一。 可以用链接复-链接域,比如[0-9a-zA-z] 6.否定字符类 否定字符类是字符类加上^,比如[^0-9]表示不包含0-9的数,但是会匹配一个。 7. 特殊字符类。
8.星号 某个字符之后跟一个星号,表示该字符在匹配模式中不出现或者出现多次。 9. 问号 某个字符之后跟一个问号,表示该字符在匹配模式中不出现或者出现一次。 10. 加号 某个字符之后跟一个加号,表示该字符在匹配模式中出现一次或者多次。 11. 大括号 括号内为{m},或者为{m,n} m:正好出现m次 m,n最少出现m次,最多出现n次。 12. 管道符号 | 管道符号进行或计算,两个匹配模式,有一个匹配则通过。 13 小括号,()将表达式分组。 我认为意思是说,将括号内的字符串当成单个字符串。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |