POSIX正则表达式
POSIX正则表达式规范
参考:http://en.wikipedia.org/wiki/Regular_expression
POSIX正则表达式分为Basic Regular Expressions 和 Extended Regular Expressions。
ERE增加支持?,+和|,去除了通配符()和{}。而且POSIX正则表达式的标准语法经常坚持使用附加的语法来支持特殊应用。虽然POSIX.2没有实现一些具体的细节,BRE和ERE提供被很多工具使用的标准。
BRE要求通配符()和{}写成和\{\},ERE中无需这样。
l 基本通配符
通配符 |
描述 |
. |
匹配任何一个单字符(许多应用不包括换行符,但是假设包括换行符也是安全的)。在大中小括号中,该通配符只匹配字符’.’,例如,a.c匹配”abc”,但是[a.c]只匹配”a”或”.”或”c”。要匹配’.’不能使用’\.’,因为’\.’的作用与’.’一样,应该使用’[.]’来匹配”a.c”中的点。 |
[] |
只匹配中括号内的一个字符。例如[abc]匹配”a”或”b”或”c”。[a-z]匹配小写的”a”到”z”。这些格式可以混合使用:[abcx-z]匹配”a”,”b”,”c”,”x”,”y”,”z”与[a-cx-z]的效果相同。 ‘-’如果出现在[]的开头或结尾,表示匹配字符’-’,例如[^-abc],[-abc] ,[abc-]。注意不能使用’\’。 ‘]’可以出现在中括号中的第一个位置,例如[]abc]或[^]abc] |
[^ ] |
匹配单个字符,该字符不能包含在中括号中。例如,[^abc]匹配任何除’a’,’b’,’c’外的字符。[^a-z]匹配任何除’a’-‘z’的字符。同理,字符与范围标识可以混合使用,例如,[^a-cx-z]。 |
^ |
匹配字符串的开头。在基于行的工具中,匹配每一行的开头。 |
$ |
匹配字符串的结尾或者换行符的前一个位置。在基于行的工具中,匹配每一行的结尾。 |
() |
定义一个子表达式。圆括号在整体匹配完后进行匹配。子表达式也叫做块或组。 BRE模式需要写成 |
\n |
匹配第n(1<=n<=9)个子表达式。POSIX.2对该通配符的定义很模糊,有的工具允许引用大于9的子表达式。 |
* |
匹配前一个元素0次或多次。例如,ab*c匹配”ac”,”abc”,”abbbbbc”等。[xyz]*匹配””,”x”,”y”,”z”,”zx”,”zyx”,”xyzzy”等。(ab)*匹配””,”ab”,”abab”等。 |
{m,n} |
匹配前一个元素至少m次,至多n次。例如,a{3,5}匹配”aaa”,”aaaa”,”aaaaa”。 BRE模式需要写成\{m,n\} |
举例
.at
匹配任何以”at”结尾长度为3的字符串,例如” at”,”aat”,”cat”等
[hc]at
匹配”hat”和”cat”
[^b]at
除了”bat”,匹配任何以”at”结尾长度为3的字符串。例如,”aat”,”cat”等
[^hc]at
除了”hat”和”cat”,匹配任何以”at”结尾长度为3的字符串。例如,”aat”,”tat”等
^[hc]at
匹配任何以”hat”或”cat”开头的字符串或行
[hc]at$
匹配任何以”hat”或”cat”结尾的字符串或行
.
匹配任何三个字符,第一个和第三个字符必须分别为”[”,”]”,因为”\[”和”\[”是经过转义,例如”[a]”,”[b]”
s.*
匹配任何以”s”开头的字符串,例如”swa”,”seed”
Extended Regular Expressions
在ERE中,反斜杠’\’用来对通配符进行转义,所以BRE中的’\(’和’\)’在ERE中改为’(’和’)’,’\{’和’\}’改为’{’和’}’。 ERE移除了’\n’通配符,并添加了如下通配符。
通配符 |
描述 |
? |
匹配前一个元素0次或1次。例如,ab?c匹配”ac”,”abc”。 |
+ |
匹配前一个元素1次或多次。例如,ab+c匹配”abc”,”abbc”等,但是不能匹配”ac”。 |
| |
匹配前一个表达式或后一个表达式。例如,abc|def匹配”abc”,”def”。 |
举例
[hc]+at
匹配”hat”,”cat”,”hhat”,”ccat”等,但是不匹配”at”
[hc]?at
匹配”hat”,”cat”,”at”
[hc]*at
匹配”at”,”hat”,”cat”,”hcat”等
cat|dog
匹配”cat”,”dog”
l Character classes
character class 是除了字面匹配最基本的正则表达式。它是很小的字符序列匹配更大的字符序列。例如,[A-Z]可以表示字母表,\d表示任意数字。character class应用于BRE和ERE。
当使用范围通配符时,例如[a-z]。计算机本地设置决定了字符编码的顺序。计算机可能按a-z的顺序来存储,或者abc…zABC…Z,或者aAbBcC…zZ的顺序。所以POSIX定义了character class,正则表达式的处理器可以正确解析该character class。
POSIX |
ASCII |
描述 |
[:alnum:] |
[A-Za-z0-9] |
数字和字母字符 |
[:alpha:] |
[A-Za-z] |
字母字符 |
[:blank:] |
[ \t] |
空格和TAB |
[:cntrl:] |
[\x00-\x1F\x7F] |
控制符 |
[:digit:] |
[0-9] |
数字 |
[:graph:] |
[\x21-\x7E] |
可视字符 |
[:lower:] |
[a-z] |
小写字母字符 |
[:print:] |
[\x20-\x7E] |
可视字符和空格 |
[:punct:] |
[][!"#$%&'()*+,./:;<=>?@\^_`{|}~-] |
标点符号 |
[:space:] |
[ \t\r\n\v\f] |
空白字符 |
[:upper:] |
[A-Z] |
大写字母字符 |
[:xdigit:] |
[A-Fa-f0-9] |
十六进制字符 |
POSIX定义的character class只能在中括号内使用。例如,[[:upper:]ab]匹配大写字母字符和”a”,”b”。
[:word:]是附加的非POSIX的character class,[:word:]表示[:alnum:]和下划线。这表明在很多编程语言中,这些通配符可能是标识符。
POSIX正则表达式的更多相关文章
- posix正则表达式说明
转载自:http://baiy.cn/utils/_regex_doc/index.htm 正则表达式说明 简介 大体来讲,正则表达式的文法分为3种标准:BRE.ERE 和 ARE.其中 BER 和 ...
- POSIX 正则表达式 BRE与ERE的差异
BRE,标准正则表达式,basic regular expressions ERE,扩展正则表达式,Extended Regular Expressions POSIX 正则表达式 传统上,POSIX ...
- ORACLE中的支持正则表达式的函数
ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBS ...
- 从零开始攻略PHP(5)——字符串操作与POSIX正则
一.字符串操作 1.字符串的格式化 1.1 干掉空格 trim()函数可以除去字符串开始位置和结束位置的空格,并将结果字符串返回. ltrim()函数可以除去字符串开始位置的空格. rtrim()函数 ...
- oracle 10g正则表达式 REGEXP_LIKE 用法
ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBS ...
- Oracle正则表达式函数:regexp_like、regexp_substr、regexp_instr、regexp_replace
Oracle正则表达式函数:regexp_like.regexp_substr.regexp_instr.regexp_replace --去掉所有特殊字符,只剩字母 SELECT REGEXP ...
- oracle的正则表达式
阅读目录 1.oracle(regular expression)简单介绍 2.oracle正则特殊字符 3.oracle正则字符簇 4.各种操作符的运算优先级 5.模拟测试例子 6.oracle对应 ...
- oracle 判断是否数字 正则表达式法
SELECT '-100' FROM dual WHERE REGEXP_LIKE('-100','(^[+-]?\d{0,}\.?\d{0,}$)'); REGEXP_LIKE 用法: ...
- PHP 正则表达式总结
可以用字符作为一个通配符来代替除换行符(\n)之外的任一个字符.例如,正则表达式:.at可以与"cat"."sat"."#at"和" ...
随机推荐
- opencv+vs2010
当程序的输出是系统而不是vs2010时 可以使用Ctrl+F5运行 或者使用命令行模式 打开cmd.exe窗口 输入自己工程(项目)所在的盘,比如我放在E盘的,我就输入E:,按回车 输入cd, ...
- EntityFrameWork使用过程问题总结
1.记录上次遇到个一个问题. (1).vs2013中的EntityFramework不能识别odp11,所以在用ef的时候 ,要换vs2012 (2).opd12不能识别Oracle 9i(所以这个 ...
- android assets文件夹浅谈
---恢复内容开始--- 最近在研究assets文件夹的一些属性跟使用方法.根据网上一些文章.实例做一下汇总,拿出来跟大家分享下,有不足的地方还请多多指教. 首先了解一下assets是干什么用的,as ...
- jpa 表字段转bean对象
select 'private ' || decode(v_type, 'int', 'Integer', 'float', 'Double', 'date', 'Date', 'String') | ...
- 开始学习Dojo
学习:Dojo入门简易教程 Dojo Toolkit 简介 Dojo 于 2004 年创建,使开发 DHTML 和 JavaScript web 应用程序开发流程更为容易,隐藏了很多现代 web 浏览 ...
- 发布网站时报错:未能将文件xxx复制到xxx,问题处理
发布时报错提示: 错误 1 未能将文件 UpLoad\images\73CDC40ECCA44550BA8201D2AC187A46.jpg 复制到 obj\Debug\Package\Package ...
- BASH 命令以及使用方法小结【转】
1,export VAR=... 这个命令在Shell下直接运行可以使之后运行的脚本也知道这个VAR.但是如果 这个命令在脚本中运行,那么不影响脚本以外的参数.举个例子,如果在一个脚本运行之前没有 V ...
- ftpget 从Windows FTP服务端获取文件
/********************************************************************************* * ftpget 从Windows ...
- Javascript 右移0位的作用
Javascript 中右移0位可以用来快速去掉小数,关于位移运算的定义: 右移运算是将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位或者一律补0,或者补符号位. 实际看下 ...
- tcp之快速重传与恢复
本文为原创,转载请注明:http://www.cnblogs.com/gistao/ Background 写网络程序的都知道,tcp的窗口控制分为慢启动阶段和拥塞避免阶段,重传机制有快速重传/恢复和 ...