正则表达式
发布时间:2020-12-14 06:06:06 所属栏目:百科 来源:网络整理
导读:使用正则表达式的目的 ? (查找)/(取出)/(匹配) 符合 条件 的某个字符或字符串; ? 正则表达式图标 正则很无情 ( 注意准确性 ); 正则很大度 ( 贪婪匹配 ); 别忘 ‘‘; 正则表达式层次 ? 基础正则表达式 ????????????????????? ? 扩展正则表达式 ?????????????
使用正则表达式的目的 ? (查找)/(取出)/(匹配) 符合 条件 的某个字符或字符串; ? 正则表达式图标
正则表达式层次 ? 基础正则表达式 ????????????????????? ? 扩展正则表达式 ????????????????????? ? 常见的转义字符 ? ? ? ? ? ? ? ? ? ? ?? ? 正则表达式单字符 ? // 特定字符: 某个具体的字符 (例如 "1","a" ) [[email?protected] ~]# grep ‘1‘ passwd bin:x:1:1:bin:/bin:/sbin/nologin mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ...... // 范围内字符: // ** 单个字符 [] (例如 [0-9],[259],[a-z],[A-Z],[bcdq],[a-zA-Z],[,:_/]) // ** 配置范围中的单个字符;可混合写,直接范围拼接就行 (例如 [a-zA-Z0-9:,_/]) // ** 反向字符 ^ (例如 [^0-9],[^0] ) [[email?protected] ~]# grep ‘[0-9]‘ passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync ...... [[email?protected] ~]# grep ‘[259]‘ passwd // 缩小范围 daemon:x:2:2:daemon:/sbin:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync mail:x:8:12:mail:/var/spool/mail:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin ...... [[email?protected] ~]# grep ‘[a-g]‘ passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown ...... [[email?protected] ~]# grep ‘[^0-9]‘ passwd // 取反 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync // 任意字符 // ** 代表任何一个字符 ‘.‘ ; *** 注意 ‘[.]‘ 和 ‘.‘ 的区别; [[email?protected] ~]# grep ‘.‘ passwd // 匹配任意字符 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync [[email?protected] ~]# grep ‘[.]‘ passwd // 此处为匹配‘.‘; [[email?protected] ~]# grep ‘.‘ passwd // 转义为普通的‘.‘,而非任意字符; // 边界字符 // ** 头尾字符 ^ (头字符) : ^root 表示以什么开头; ** 注意与[^]的区别; // $ (尾字符) : false$ 表示以什么结尾; // ^$ 表示空行; [[email?protected] ~]# grep ‘^root‘ passwd root:x:0:0:root:/root:/bin/bash [[email?protected] ~]# grep ‘false$‘ passwd // 元字符(代表普通字符或特殊字符) // ** w: 匹配任何字类字符,包括下划线,等同于 [a-zA-Z0-9_] // ** W: 匹配任何非字类字符,等同于 [^a-zA-Z0-9_] // ** b: 代表单词的分割; [[email?protected] ~]# grep ‘bxb‘ passwd // 只匹配放置密码的单个 ‘x‘,而不匹配单词中的x; root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync ...... ? ? 正则表达式字符组合 ? // 字符串 // ** ‘root‘ ‘1000‘ ‘r..t‘ [[email?protected] ~]# grep ‘root‘ passwd // 匹配root字符串 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [[email?protected] ~]# grep ‘r..t‘ passwd // 匹配r与t中间两个任意的字符; root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin // ** ‘[A-Z][a-z]‘ ‘[0-9][0-9]‘ [[email?protected] ~]# grep ‘[A-Z][a-z]‘ passwd ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin ... // *** 重复 (se)*-->针对字符串的重复,正则表达式中()也需要加上‘‘,如‘(se)*‘; // *: 零次或者多次匹配前面的字符或子表达式; // +: 一次或者多次匹配前面的字符或子表达式; (需要配合‘‘使用) // ?: 零次或者一次匹配前面的字符或子表达式; (同样需要配合‘‘使用) // {n,m}: 重复特定次数 grep ‘[0-9]{2,3}‘ passwd // *** 任意字符串 ‘.*‘ 例如:^r.* m.*t (贪婪匹配) // *** 逻辑的表示 ‘|‘ 例如:‘/bin(false|true)‘ ? ? 正则表达式案例 ? ? // 案例一,匹配4-10位的QQ号 [[email?protected] ~]# grep ‘b[0-9]{4,10}b‘ qq.txt [[email?protected] ~]# grep ‘^[0-9]{4,10}$‘ qq.txt // 案例二,匹配15位或18位的身份证号(支持带X的) // 分析: 身份证号开头不能是0,结尾有可能为X,两头确定好,中间为13或16的逻辑与. [[email?protected] ~]# grep ‘^[1-9]([0-9]{13}|[0-9]{16})[0-9xX]$‘ cert.txt // 案例三,匹配密码(由数字,26个字母和下划线组成) // 分析: 按描述,确定w可符合,重复一次或者多次 [[email?protected] ~]# grep ‘^w+$‘ cert.txt (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用Swift Mailer将html和css邮件发送到gmail
- xcode – 当ParseOSX框架与Dyld错误时,OSX App在加载时崩溃
- 对单元测试及CppUnit的初步研究
- ruby-on-rails – 在一个页面上列出并创建rails 3
- 一个演示 XML 开发的例子:
- reactjs – 如何在使用webpack发布NPM模块(React组件)时正确
- ruby-on-rails – Rails 4:何时建立数据库连接?
- swfupload + commons-fileupload实现文件批量上传,带百分比
- Open Flash Chart 使用方法(一)
- 实体序列化生成个性XML ,生成XML节点/属性