曲径通幽论坛

标题: [正则表达式]基本元字符及含义(举例) [打印本页]

作者: beyes    时间: 2010-2-27 17:40
标题: [正则表达式]基本元字符及含义(举例)
基本元字符集及含义:
^只匹配行首
$只匹配行尾
*匹配任意个字符
[ ]匹配[ ]内字符。可以是一个单字符,也可以是字符序列。可以用 - 表示[ ]内字符序列范围,如[a-d]代替[abcd]
\用来屏蔽一个元字符的特殊含义
.匹配任意单字符
pattern\{n\}用来匹配前面 pattern 出现次数。n 为次数
pattern\{n, \}含义同上,但次数最少为n
pattern\{n, m\}含义同上,但 pattern 出现次数在 n 与 m 之间


^ . 的使用
[beyes@beyes-groad ~]$ ls -l |grep ^-|grep ...x..x..x
-rwxrwxrwx 1 beyes beyes        0  2月 27 14:46 aa2.txt
-rwxrwxrwx 1 beyes beyes        0  2月 27 14:46 aa3.txt
-rwxrwxrwx 1 beyes beyes        0  2月 27 14:46 aa4.txt
-rwxrwxrwx 1 beyes beyes        0  2月 27 14:46 a

上面,第 1 个 grep 里过滤掉目录后,剩下的都是普通文件。然后,第 2 个 grep 里过滤出文件属性中3个组都具有执行的文件。

匹配空白行使用 ^$
因为 ^ 匹配行首,而 $ 匹配行尾,而 ^$ 表示 ^ 与 $ 之间没有内容,即为匹配了一个空行。

使用 \{\} 匹配模
现在假设有一文本文件 regular.txt,其中的内容为:
[beyes@beyes-groad ~]$ cat regular.txt
AAB
HELLO
WORLD
ABACD
CDMAAB
WAABCOK
KKOOPP
OKDLFKAAAAB
DI3IOKAAAAAAAAB
93IJKLDFALAAAB
DF903KJBAAB
DFK23KLDJKFAKAAAAB
D893KA
DFAKDFAAB

1、用 A\{2\}B 找出匹配 AAB 模式的行:
[beyes@beyes-groad ~]$ cat regular.txt |grep "A\{2\}B"
AAB
CDMAAB
WAABCOK
OKDLFKAAAAB
DI3IOKAAAAAAAAB
93IJKLDFALAAAB
DF903KJBAAB
DFK23KLDJKFAKAAAAB
DFAKDFAAB


2、用 A\{4,\}B 匹配 A 至少要连续出现 4 次且后接字母 B 的行:
[beyes@beyes-groad ~]$ cat regular.txt |grep "A\{4,\}B"
OKDLFKAAAAB
DI3IOKAAAAAAAAB
DFK23KLDJKFAKAAAAB


3、用 A\{3,4\}B 匹配连续出现 A 字符 3 到 4 次之间(少于3不行)并且后接字母 B 的行:
[beyes@beyes-groad ~]$ cat regular.txt |grep "A\{3,4\}B"
OKDLFKAAAAB
DI3IOKAAAAAAAAB
93IJKLDFALAAAB
DFK23KLDJKFAKAAAAB





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2