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

 

 

 

 

 

 

上一篇:DB design from UML to SQL


下一篇:Log4j.xml useful Template