一、概念梳理


1.为什么叫正则表达式?


这样的名字无疑让人一头雾水,反观英文名 regular expression-规则表达式。“一个字符串规则的表述”更加符合实际。

#include<stdio.h>
#include<sys/types.h>
#include<regex.h>
int my_match(char* pattern,char* buf){
  int status,i;
  int flag=REG_EXTENDED;
  regmatch_t pmatch[1];
  const size_t nmatch=1;
  regex_t  reg;
  //编译正则模式
  regcomp(®,pattern,flag);
  //执行正则表达式和缓存的比较
  status=regexec(®,buf,nmatch,pmatch,0);
  //打印匹配的字符串
  for(i=pmatch[0].rm_so;i<pmatch[0].rm_eo;++i){
    putchar(buf[i]);
  printf("\n");
  regfree(®);
  return status;
}
int main(){
  char pattern[1024]="^[1-9][0-9]{10}$";
  char buf[1024]="41509030127";
  int status=my_match(pattern,buf);
  if(status==REG_NOMATCH)
    printf("No match!\n");
  else if(0 == status){
    printf("匹配成功!\n");
  return 0;
                《正则表达式经典实例(第2版)》——导读
            
正则表达式在过去十多年间越来越普及。如今,所有常用的编程语言都会包含一个强大的正则表达式函数库,甚至在语言本身就内嵌了对于正则表达式的支持。许多开发人员都会利用这些正则表达式的功能,在应用程序中为用户提供使用正则表达式对其数据进行查找或者过滤的能力。正则表达式已经无处不在。
《正则表达式经典实例(第2版)》——2.22 把匹配上下文插入到替代文本中
上下文(context)这个术语,指的是正则表达式所应用于的目标文本。总共存在3种上下文:正则匹配之前的目标文本、正则匹配之后的目标文本以及整个目标文本。在匹配之前的文本有时候被称作左上下文(left context),而匹配之后的文本则相应地被称作右上下文(right context)。
《正则表达式经典实例(第2版)》——2.21 把部分的正则匹配添加到替代文本中
实例2.10讲解了在正则表达式中如何使用捕获分组来多次匹配相同的文本。在正则表达式中,每个捕获分组匹配到的文本在每次成功匹配之后都是可用的。你可以把部分或者所有捕获分组中的文本按照任意顺序甚至多次插入到替代文本中。