POSIX正则表达式

POSIX正则表达式

分类: 项目相关2010-09-26 16:16 2131人阅读 评论(0) 收藏 举报

正则表达式graphbasicpython存储unix

正则表达式(regular expression)是一种表示方式,在许多地方均有对此的支持,如命令grep、语言Python、工具vim等。但是这里仅讨论POSIX正则表达式,显然它与其他正则表达式(如传统的Unix正则表达式)存在稍许的差异。POSIX正则表达式分为:BRE(Basic Regular Expression)和ERE(Extended Regular Expressions)。以下是有关POSIX正则表达式的元字符(meta)的说明:

/
用于关闭后续字符的特殊意义。有时用于反向的打开后续字符的特殊意义。
.
(点号)匹配任意单个的字符,但NULL除外。
*
匹配任意数目的字符(可以为0)。以ERE来说,此前置字符可是正则表达式,如.*代表了匹配任意字符的长度。但对于BRE而言,*置于正则表达式的第一个字符,不具任何特殊意义。
^
(脱字号)匹配出现在行首或字符串开始位置的空字符串。ERE:置于任何位置都具特殊含义;BRE:仅在正则表达式的开头具有此特殊含义。
$
匹配出现在行末的空字符串。ERE:置于任何位置都具特殊含义;BRE:仅在正则表达式的结尾具有此特殊含义。
[...]
方括号表达式,匹配方括号内的任意一字符。连字符(-)指的是连续字符的范围。^符号置于方括号里第一个字符则有反向含义:指的是匹配不在列表内(方括号内)的任意字符。作为首字符的一个连字符或是结束方括号(]),则被视为列表的一部分。所有其他的meta字符也为列表的一部分。

以下只属于BRE
/{n-m}
区间表达式,匹配在它之前的单个字符重现的次数区间。/{n/}指的是重复n次;/{n,/}则为至少出现n次重复,而/{n,m}为重现n至m次。
/( /)
/(与/)间的模式存储在特殊的“保留空间”。最多可将9个独立的子模式存储在单个模式中。如/(ab/).*/1,指的是匹配于ab组合的两次重现。
/n
重复在/(与/)方括号内第n个子模式至此点的模式。n为1至9的数字,由左开始。

以下只属于ERE
{n,m}
与先前提及的BRE的/{n,m/}一样,只不过方括号前没有反斜杠。
+
匹配前面正则表达式的1个或多个实例
?
匹配前面正则表达式的0个或1个实例
|
匹配于|符号前或后的正则表达式。
( )
匹配于方括号括起来的正则表达式群。

POSIX方括号表达式:
1、字符集
[::]
2、排序符号
[..]
3、等价字符集
[=
=]

具体如下:
[:alnum:]
数字字符
[:alpha:]
字母字符
[:blank:]
空格与定位字符
[:cntrl:]
控制字符
[:digit:]
数字字符
[:graph:]
非空格字符
[:lower:]
小写字母字符
[:print:]
可显示的字符
[:punct:]
标点符号字符
[:space:]
空白字符
[:upper:]
大些字母字符
[:xdigit:]
十六进制数字

同时在使用时运算符存在顺序问题,以下是由高至地的:
BRE:
1、[. .] [= =] [: :]
2、/meta
3、[]
4、/( /) /digit
5、* /{ /}
6、无符号
7、^ $ .

ERE:
1、[. .] [= =] [: :]
2、/meta
3、[]
4、()
5、* + ? {}
6、无符号
7、^ $ .
8、|

来源: <http://blog.csdn.net/echo_qiang/article/details/5907679>

来自为知笔记(Wiz)

时间: 2024-10-03 10:08:07

POSIX正则表达式的相关文章

POSIX 正则表达式 BRE与ERE的差异

POSIX 正则表达式 传统上,POSIX 定义了两种正则表达式语法, 即:基本正则表达式(BRE)和扩展正则表 达式(ERE).大多数linux程序至少要符合BRE规范. linux中,不同的程序支持的REGXP也不同,如sed只支持BRE的大部分,这主要是收到速度的限制. sed编辑器要尽可能快的处理数据流中的文本.而grep可以支持ERE,不过要使用-E 选项. gawk使用BRE引擎. 其中, BRE 定义的语法符号包括: . - 匹配任意一个字符. [] - 字符集匹配,匹配方括号中定

Posix正则表达式API说明

1 头文件 #include <regex.h> 2 基本方法 2.1 regcomp 函数原型 int regcomp(regex_t *preg, const char *regex, int cflags); 功能 编译正则表达式,以便regexec方法使用 参数含义 preg preg是一个指向编译后的正则表达式结构的指针,p意思是pointer,reg意思是regex_t类型. regex_t是一个结构体数据类型,用来存放编译后的正则表达式,它的成员re_nsub用来存储正则表达式中

PHP学习笔记之POSIX正则表达式

1 基础知识 正则表达式是一种描述一段文本模式的方法.到目前为止,我们前面所用到过的精确(文字)匹配也是一种正则表达式.例如,前面我们曾搜索过正则表达式的术语,像"shop"和"delivery". 在PHP中,匹配正则表达式更有点像strstr()匹配,而不像相等比较,因为是在一个字符串的某个位置(如果不指明则可能在字符串中的任何位置)匹配另一个字符串.例如,字符串"shop"匹配正则表达式"shop".它也可以匹配正则表达

刨根究底正则表达式之一——正则表达式简介

声明: 本系列文章的主要参考书有: <精通正则表达式>英文版及中文版 作者: Jeffrey E·F·Friedl 译者:余晟 电子工业出版社 2012-07 <正则指引>作者:余晟 电子工业出版社 2012-05 <正则表达式必知必会>作者:Ben Forta 译者:杨涛 人民邮电出版社2015-01 <冒号课堂:编程范式与OOP思想>作者:郑晖 电子工业出版社 2009-10 同时,还参考了网上的大量资料,除了少部分资料由于未作大量修改(但基本上也有少量

PHP正则表达式简介

PHP支持两种风格的正则表达式语法:POSIX和Perl.POSIX风格的正则表达式更容易掌握,但不能安全用于二进制模式,而Perl兼容的正则表达式相对比较复杂. 正则表达式就是有普通字符(如a~z)和特殊字符(称为元字符)组成的字符串模式.使用正则表达式可以完成以下功能:①测试字符串的某个模式:②替换文本:③根据模式匹配从字符串中提取一个子字符串. 一.POSIX风格的正则表达式 1.编写正则表达式 正则表达式是有普通字符和元字符组成的,通过元字符和普通字符的不同组合,可以写出不同意义的正则表

Oracle 正则表达式

转载:http://www.cnblogs.com/gkl0818/archive/2009/02/12/1389521.html 就是由普通字符(例如字符a到z)以及特殊字符(称为元字符)组成的文字模式.该模式描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配. 本文详细地列出了能在正则表达式中使用,以匹配文本的各种字符.当你需要解释一个现有的正则表达式时,可以作为一个快捷的参考.更多详细内容,请参考:Francois Liger,Cr

cocos2dx下C++11正则表达式和android下C语言正则表达式的使用--------案例密码校验

/************************************************************************/ /* 密码校验 */ /* C++11下没有问题,但是C语言是有问题的 */ /* 错误案例:^[[email protected]#$%^&*()_+`\\-={}\\[\\]:\";'<>?,.\\/]{6,20}$ 正确案例:^[][email protected]#$%^&*()_+`={}:;'<>

2015.3.20 Oracle使用正则表达式

.Oracle正则表达式使用介绍 正则表达式具有强大.便捷.高效的文本处理功能.能够添加.删除.分析.叠加.插入和修整各种类型的文本和数据.Oracle从10g开始支持正则表达式 ..下面通过一些例子来说明使用正则表达式来处理一些工作中常见的问题. 字符簇 字符含义 Oracle正则表达式(regularexpression) 元字符 字符含义 特殊字符: '^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合. '$' 匹配输入字符串的结尾位置.如果设置了 RegE

Oracle正则表达式-初级使用

oracle正则表达式 ORACLE中的支持正则表达式的函数主要有下面四个: 1,REGEXP_LIKE :与LIKE的功能相似 2,REGEXP_INSTR :与INSTR的功能相似 3,REGEXP_SUBSTR :与SUBSTR的功能相似 4,REGEXP_REPLACE :与REPLACE的功能相似 它们在用法上与Oracle SQL 函数LIKE.INSTR.SUBSTR 和REPLACE 用法相同, 但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符. POS