|||
正则表达式基础知识
2014–04–03 13:49:31
整理网络上关于正则表达式异同的资料, 加以补充.
正则表达式是基于样式匹配的文本处理技术的关键所在。想要在编写文本处理工具方面驾轻就熟,就必须对正则表达式有个基本的了解。
正则表达式:在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。正则表达式是一种用于文本匹配的形式小巧、具有高针对性的编程语言,在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。由于起源于Unix系统,因此很多语法规则是一样的。但是随着逐渐发展,扩展出以下几个类型。
一、正则表达式分类
基本的正则表达式(Basic Regular Expression, 又叫 Basic RegEx, 简称 BREs)
扩展的正则表达式(Extended Regular Expression, 又叫 Extended RegEx, 简称 EREs)
Perl的正则表达式(Perl Regular Expression, 又叫 Perl RegEx, 简称 PREs)
只有掌握了正则表达式,才能全面地掌握 Linux 下的常用文本工具(例如:grep、egrep、GUN sed、 Awk 等) 的用法
二、Linux 中常用文本工具与正则表达式的关系
常握 Linux 下几种常用文本工具的特点,对于我们更好的使用正则表达式是很有帮助的.
grep, egrep 正则表达式特点
grep 支持:BREs、EREs、PREs 正则表达式
grep 指令后不跟任何参数,则表示要使用 BREs
grep 指令后跟 “-E” 参数,则表示要使用 EREs
grep 指令后跟 “-P” 参数,则表示要使用 PREs
egrep 支持:EREs、PREs 正则表达式
egrep 指令后不跟任何参数,则表示要使用 EREs
egrep 指令后跟 “-P” 参数,则表示要使用 PREs
grep 与 egrep 正则匹配文件,处理文件方法
grep 与 egrep 的处理对象:文本文件
grep 与 egrep 在处理文本文件时,是按行处理的
grep 与 egrep 的处理过程:查找文本文件中是否含要查找的 “关键字”(关键字可以是正则表达式),如果含有要查找的 ”关健字“,那么默认返回该文本文件中包含该”关健字“的该行的内容,并在标准输出中显示出来,除非使用了“>" 重定向符号
sed 正则表达式特点
sed 支持:BREs、EREs
sed 指令默认是使用“BREs”
sed 命令参数“-r” ,则表示要使用“EREs”
sed 功能与作用
sed 处理的对象:文本文件
sed 在处理文本文件的时候,也是按行处理的
sed 处理操作:对文本文件的内容进行 — 查找、替换、删除、增加等操作
Awk(gawk)正则表达式特点
Awk 文本工具支持:EREs
awk 指令默认是使用 “EREs”
Awk 文本工具处理文本的特点
awk 处理的对象:文本文件
awk 处理操作:主要是对列进行操作
三、Linux中常见3种类型正则表达式比较
基本组成部分
元字符(meta character)是一种Perl风格的正则表达式,只有一部分文本处理工具支持它,并不是所有的文本处理工具都支持。
POSIX字符类是一个形如[:…:]的特殊元序列(meta sequence),可以用于匹配特定的字符范围。
四、不同类型正则表达式比较
当使用BERs(基本正则表达式)时,必须在下列这些符号前加上转义字符屏蔽掉它们的 speical meaning ? + | { } ( )
修饰符用在正则表达式结尾,例如:/dog/i,其中 “i“ 就是修饰符,它代表的含义就是:匹配时不区分大小写. 常见的修饰符如下:
g 全局匹配(即:一行上的每个出现,而不只是一行上的第一个出现)
s 把整个匹配串当作一行处理
m 多行匹配
i 忽略大小写
x 允许注释和空格的出现
U 非贪婪匹配
五、正则表达式顺口溜
网上有流传的一套关于正则的口诀, 内容多却不够顺口, 我就编个顺口溜吧, 不够雅驯, 姑妄闻之.
正则匹配很重要 文本处理功能妙
基本规则要知道 字符次数范围到
字符匹配最简单 点把尖刀把山翻(.^$)
点号任意都能套 尖刀首尾来报告
特殊字符认不了 反斜线来把它找
若要重复字符串 小括号中站一站
次数限定要记好 星加问号少不了{*+?}
星号任意都能套 加号至少要一炮
剩下问号零或幺 不怕麻烦大括号
说起范围记得好 中括号中字符表[|^-]
竖杠两旁选一个 尖尖进去全完了
横线跑来帮帮忙 由低到高全阵亡
六、正则表达式图解
如果你想弄清楚某个正则表达式的意思, 可以试试这里. 虽然只支持javascript的正则语法, 对其他语言也很有帮助.
相关资料
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-23 20:51
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社