正则regex的posix标准,gnu扩展以及PC兼容性

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。
正则表达式的特点是:
1. 灵活性、逻辑性和功能性非常的强;
2. 可以迅速地用极简单的方式达到字符串的复杂控制。
3. 对于刚接触的人来说,比较晦涩难懂。
由于正则表达式主要应用对象是文本,因此它在各种文本编辑器场合都有应用,小到著名编辑器EditPlus,大到Microsoft Word、Visual Studio等大型编辑器,都可以使用正则表达式来处理文本内容。

regex(Regular Expression)的posix标准是unix平台共同遵守的,而gnu对regex做了大量扩展,使regex更好用,但不是所有的平台都支持gnu扩展。

Mac OS X平台就只支持posix标准而不支持gnu扩展,因此使用gnu扩展的脚本在Mac OS X平台上运行时就会遇到兼容性问题。

比如匹配所有空白字符的\s就是gnu扩展,如果要在Mac OS X上匹配所有空白字符要使用[[:space:]]。

下面是几个常见的GNU扩展对应的posix表达:
\w – [[:alnum:]_]
\W – [^[:alnum:]_]
\s – [[:space:]]
\S – [^[:space:]]

时间: 2024-10-27 10:19:36

正则regex的posix标准,gnu扩展以及PC兼容性的相关文章

POSIX标准和XSI扩展

POSIX 表示可移植操作系统接口(Portable Operating System Interface ). 电气和电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE) 最初开发 POSIX 标准,是为了提高 UNIX 环境下应用程序的可移植性.然而, POSIX 并不局限于 UNIX.许多其它的操作系统,例如 DEC OpenVMS 和  Microsoft Windows NT,都支持 POSIX 标准,尤其是 I

《OpenCL实战》一1.5 OpenCL标准和扩展

1.5 OpenCL标准和扩展 当你在通过网站www.khronos.org/opencl了解OpenCL时,你会看到一个名为opencl-1.1.pdf的重要文件.这其中包含了OpenCL1.1的标准,它所包含的是大量关于编程语言的内容.它不仅仅定义了OpenCL的函数和数据结构,还对厂商所提供的开发工具提出了功能上的要求.除此之外,它还设定了一系列的标准来判定设备的兼容性. 但是兼容软件和硬件所能提供的功能已经超出了标准所设定的内容.这些额外的特性需要通过扩展(extensions)的方式供

9.Boost之正则regex

 1正则表达式,案例1(如果使用的boost库是64位的,要把VS设置成支持64位的,这样的化,才可以运行通过) #include <boost/regex.hpp> #include <locale> #include <iostream> #include <string>   using namespace std;   void main() {     //设置语言环境为:English     std::locale::global(std:

POSIX标准下文件描述符与文件流的转换操作代码

注意FILENO()和FDOPEN()函数的作用,输入参数与返回值. 1 #include <sys/stat.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <fcntl.h> 5 #include <unistd.h> 6 7 int main(void) 8 { 9 int fd; 10 FILE *stream; 11 12 printf("stdin is:\t

shell中的各种括号的使用方法_linux shell

在这里我想说的是几种shell里的小括号,大括号结构和有括号的变量,命令的用法,如下: 1.${var} 2.$(cmd) 3.()和{} 4.${var:-string},${var:+string},${var:=string},${var:?string} 5.$((exp)) 6.$(var%pattern),$(var%%pattern),$(var#pattern),$(var##pattern) 现在分述如下: 1.Shell中变量的原形:${var}大家常见的变量形式都是$var

SHELL小总结

Where there is a shell, there is a way. SHELL Scripts Programming bash (CentOS) shell? where is shell? 常见的shell种类 cat /etc/shellschsh -lls /bin/*sh ls /sbin/nologinrpm -ivh tcsh ksh 4. shell环境的切换 临时切换:ps u #ps auxpstree | grep "sh"kshcsh echo $S

《C语言编程魔法书:基于C11标准》——1.4 关于GNU规范的语法扩展

1.4 关于GNU规范的语法扩展 GNU是一款能用于构建类Unix操作系统的计算机软件合集,由自由软件之父Richard Stallman开创,于1983年9月27日对外发布.GNU完全由自由软件(free software)构成.GNU语法扩展源自于GCC编译器,在1987年发布1.0版本,称为GNU C Compiler.随后,GCC编译器前端支持了C++.Objective-C/C++.Fortran.Ada.Java以及最近跃升的Go等编程语言,因此现在GCC被称为GNU Compile

关于正则的迷思

正则是我们日常编程中一定会使用到的,不管是各种语言中的正则匹配,还是linux/unix系统上的grep/egrep命令,都是在使用正则来匹配字符串.随着用的深入,可能会感到越来越迷惑: 为什么有的语言要提供多种正则匹配的函数集? -- 比如php的preg系列和ereg系列 为什么有的正则语句在不同的语言上匹配出来的东西是不一样的? -- 比如unix的grep命令和perl语言的grep 故事从头开始讲 正则表达式(Regular Expression)从1956年就开始出现这个概念,后来U

我自己关于C语言,编译器,标准库,GUN glibc,CRT ,API之类的理解。

先声明,只是我自己看了一些东东的想法. 因为以前这一套东东太缠绕人了. C语言,是一种语言标准,和它对照的是C++,JAVA,BASIC,FORTRAN,PASCAL等等概念.它定义的是自己一套适用于计算机的标准规范.如关键字,数据类型,表达式,语句结构等等,它不包含强制具体的实现,没有强制INT数据类型的长度一定是4等.这种具体而微的定义,一般是各编译器厂商实现的.所以,那本经典的二人合著本的C教材第二版,其实很薄.真正C语言标准的内容,不多. 编译器和标准库,其实是不同的厂商依据C语言标准的