首页 > 代码库 > 正则表达式 . 格式

正则表达式 . 格式

/A匹配缓冲区的起始点;

/Z匹配缓冲区的结束点;关于它们的使用,详细参见代码。

/d表示数字,/d{3}表示一个三位数的数字,{}表示约束运算符(bound operator),表示要重复3次;和//d//d//d的效果一样;

重复符+:表示前面的表达式可以重复,但是必须至少重复一次;比如:[a-zA-Z]+,就表示一个单词了——可以有任意多个大小写字母不断重复组成,不就是单词么!

/w:表示单词;这比上面的方式更加简单!这个缩写可以匹配所有的单词字符,不仅仅是ascii的单词字符,因此更适合国际化环境。

一个圆点(.):表示一个任意字符;

可选择的匹配:意味着从两个或者多个子表达式中选择一个匹配的子表达式,每个选择之间用竖线符号(|)进行分隔。比如:

regex reg("(//d{2}|N/A)"),表示2个数字,或者字符串“N/A”。值得注意的是:这个表达式用圆括号括起来,目的是为了确保可以将整个表达式看做两个可选项。

/s,表示一个空格;

后向引用(back reference操作):即在后面的表达式中,对前面的子表达式进行引用。可以用索引号来进行,比如下面的例子:

 regex reg("(([a-zA-Z]+))//s//1");

就是表示:一个单词,然后加一个空格,然后再是这个单词。第一个括号里面的部分([a-zA-Z]+),为子表达式。(最后的//1,注意,是索引“一”,而不是字母“L”的小写哦!)

kleene星号(*),它表示前面的表达式可以被匹配零次或者多次。

问号(?),它可以被用于声明非贪婪的重复(关于这方面的讨论,参见Regex代码),但是就它自身而言,它表示表达式必须出现零次或者一次。

元字符(^),表示取反的字符类。我们可以用它来表示一个匹配任意不在给定字符类中的字符,即所列出的字符类的补集,参见代码。

关于约束重复记号,用法非常灵活,比如:

regex reg("//d{5}");    //严格匹配5个数字regex reg("//d{2,4}");  //匹配2个、3个或者4个数字regex reg("//d{2,}");   //匹配2个或者更多数字,没有上限

 需要注意的是,在编程时,需要在转义字符之前再加一个转义字符(/),并以一个非字母字符结束该序列。也就是说,虽然我们/d就表示一个数字,但是在写的时候,应该写作

regex reg("//d");

 

正则表达式 . 格式