- 论坛徽章:
- 0
|
正则表达式: 元字符(metacharcter) \b 表示一个位置,通常用来界定一个单词的范围\bhi\b \B 非字母开头和结尾 . 表示一个字符,除换行符以外 \d 表示一个数字字符 \D 表示非数字字符 \s 表示不可见的空格、制表符tab,或者换行符、中文全角字符 \S 表示非空白符 \w 表示字母、数字或者下划线 \W 表示非字母、数字或者下划线 ^x 表示x开始 [^x] 表示非x开始 x$ 表示x结尾
重复(粘帖前一个字符或者组) + 表示1个或者多个 ? 表示0个或者一个 * 表示0个或者多个 {n} 表示n个 {n,} 表示至少n个 {n,m} 表示至少n个,但不超过m个
() 表示一个分组,分组从1开始,用\1,\2 ...表示 [] 表示其中或者一个范围中之一 [ac\d] 表示一个a或者c或者一个数字,[a-zA-Z0-9]表示a-z或者A-Z或者0-9之一 {} 表示粘帖的前一个字符或者分组的次数 | 表示或者,分支条件 0\d{2,3}-\d{7,8}
常见实例: ip地址: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ 单词分割: /^[\p{L}\p{N},]+$/u 匹配任意unicode字符,中间用英文逗号(,)分割 email: ^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2,3}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$ 链接: <a[^>]*href=\"[^\s\"]+\"[^>]*>[^<]*<\/a> URL: ^([a-z]+:\/\/)?([a-z]([a-z0-9\-]*\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(:[0-9]{1,5})?(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-z][a-z0-9_]*)?$
练习: [root@ /UNIX]# sed -n '/^$/p' re > re.txt [root@ /UNIX]# cat re.txt 1 Which of the following matches regexp /a(ab)*a/
1) abababa 2) aaba 3) aabbaa 4) aba 5) aabababa
2 Which of the following matches regexp /ab+c?/
1) abc 2) ac 3) abbb 4) bbc
3 Which of the following matches regexp /a.[bc]+/
1) abc 2) abbbbbbbb 3) azc 4) abcbcbcbc 5) ac 6) asccbbbbcbcccc
4 Which of the following matches regexp /abc|xyz/
1) abc 2) xyz 3) abc|xyz
5 Which of the following matches regexp /[a-z]+[\.\?!]/
1) battle! 2) Hot 3) green 4) swamping. 5) jump up. 6) undulate? 7) is.?
6 Which of the following matches regexp /[a-zA-Z]*[^,]=/
1) Butt= 2) BotHEr,= 3) Ample 4) FIdDlE7h= 5) Brittle = 6) Other.=
7 Which of the following matches regexp /[a-z][\.\?!]\s+[A-Z]/ (\s matches any space character) 1) A. B 2) c! d 3) e f 4) g. H 5) i? J 6) k L
8 Which of the following matches regexp /(very )+(fat )?(tall|ugly) man/
1) very fat man 2) fat tall man 3) very very fat ugly man 4) very very very tall man
9 Which of the following matches regexp /<[^>]+>/
1) <an xml tag> 2) <opentag> <closetag> 3) </closetag> 4) <> 5) <with attribute=”77”>
解释及答案: /a(ab)*a/ a后面跟0个或者多个ab,再跟一个a abababa aba /ab+c?/ ab后面跟任意多字符,再跟0个或者多个c abc abbb /a.[bc]+/ a后面跟一个任意字符,后面跟b或者c,再跟任意字符 abc abbbbbbbb azc abcbcbcbc asccbbbbcbcccc /abc|xyz/ abc组合或者xyz组合 abc xyz /[a-z]+[\.\?!]/ a到z中的任意一个字母,后面跟任意字符(不含空格回车),再跟一个.或者?或者!之一 battle! swamping. undulate? /[a-zA-Z]*[^,]=/ 0个或者任意个大写或者小写字母,后面跟,号除外的字符,再跟一个=号 Other.= Butt= /[a-z][\.\?!]\s+[A-Z]/ a到z中的一个字母,后面跟.或者?或者!之一,后面跟空格或者tab,再跟A到Z之一 g. H i? J /(very )+(fat )?(tall|ugly) man/ 1个或者任意个very 后面跟0个或者任意个fat ,后面跟tall或者ugly,后面跟一个空格,最后一个是man very very very tall man very very fat ugly man /<[^>]+>/ <开始,后面跟1个或者任意个>除外的字符,最后跟一个> <with attribute=”77”> </closetag> <an xml tag>
|
|