曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5802|回复: 0
打印 上一主题 下一主题

[正则表达式]基本元字符及含义(举例)

[复制链接]

4917

主题

5879

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34382
跳转到指定楼层
楼主
发表于 2010-2-27 17:40:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基本元字符集及含义:
^只匹配行首
$只匹配行尾
*匹配任意个字符
[ ]匹配[ ]内字符。可以是一个单字符,也可以是字符序列。可以用 - 表示[ ]内字符序列范围,如[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
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2024-5-15 10:31 , Processed in 0.060919 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表