代码之美:正则表达式

来源:互联网 发布:淘宝网中年男羽绒服 编辑:程序博客网 时间:2024/06/05 17:21

字符                          含义

c                             匹配任意的字母c
.                              匹配任意的单个字符
^                              匹配输入字符串的开头
$                             匹配输入字符串的结尾
*                              匹配前一个字符的零个或者多个出现

 

/* match: search for regexp anywhere in text */

           int match(char *regexp, char *text)

          {

                       if (regexp[0] == '^')

                           return matchhere(regexp+1, text);

                       do { /* must look even if string is empty */

                               if (matchhere(regexp, text))

                                   return 1;

                       } while (*text++ != '/0');

                                    return 0;

           }



/* matchhere: search for regexp at beginning of text */

           int matchhere(char *regexp, char *text)

          {

                        if (regexp[0] == '/0')

                           return 1;

                       if (regexp[1] == '*')

                           return matchstar(regexp[0], regexp+2, text);



                       if (regexp[0] == '$' && regexp[1] == '/0')

                           return *text == '/0';

                       if (*text!='/0' && (regexp[0]=='.' || regexp[0]==*text))

                            return matchhere(regexp+1, text+1);

                        return 0;

           }



/* matchstar: search for c*regexp at beginning of text */

            int matchstar(int c, char *regexp, char *text)

           { 

                       do { /* a * matches zero or more instances */

                             if (matchhere(regexp, text))

                                  return 1;

                       } while (*text != '/0' && (*text++ == c || c == '.'));

                        return 0;

           }

原创粉丝点击