程序如下:
代码之美《正则匹配》_休闲int match(char * regexp,char *text);    
代码之美《正则匹配》_休闲int matchhere(char * regexp,char *text);    
代码之美《正则匹配》_休闲int matchstar(int c, char *regexp, char *text);    
代码之美《正则匹配》_休闲int main(int argc, char* argv[])    
代码之美《正则匹配》_休闲{    
代码之美《正则匹配》_休闲printf("Hello World!\n");    
代码之美《正则匹配》_休闲int t=match("t.a*$","twaaaaw");    
代码之美《正则匹配》_休闲printf("result :%d \n",t);    
代码之美《正则匹配》_休闲        return 0;    
代码之美《正则匹配》_休闲}    
代码之美《正则匹配》_休闲/* 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)    
代码之美《正则匹配》_休闲{    
代码之美《正则匹配》_休闲     printf("2 %s,%s\n",regexp,text);    
代码之美《正则匹配》_休闲         if (regexp[0] == '\0')    
代码之美《正则匹配》_休闲                 return 1;    
代码之美《正则匹配》_休闲         if (regexp[1] == '*') {    
代码之美《正则匹配》_休闲     //printf("%c,%s,%s\n",regexp[0],regexp+2,text);    
代码之美《正则匹配》_休闲                 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)    
代码之美《正则匹配》_休闲{    
代码之美《正则匹配》_休闲     printf("3 %c,%s,%s\n",c,regexp,text);    
代码之美《正则匹配》_休闲         do {     /* a * matches zero or more instances */    
代码之美《正则匹配》_休闲        
代码之美《正则匹配》_休闲                 if (matchhere(regexp, text))    
代码之美《正则匹配》_休闲                         return 1;    
代码之美《正则匹配》_休闲         } while (*text != '\0' && (*text++ == c || c == '.'));    
代码之美《正则匹配》_休闲         return 0;    
代码之美《正则匹配》_休闲}    
打印出来的文本:
2 t.a*$,twaaaaw    
2 .a*$,waaaaw    
2 a*$,aaaaw    
3 a,$,aaaaw    
2 $,aaaaw    
2 $,aaaw    
2 $,aaw    
2 $,aw    
2 $,w    
2 t.a*$,waaaaw    
2 t.a*$,aaaaw    
2 t.a*$,aaaw    
2 t.a*$,aaw    
2 t.a*$,aw    
2 t.a*$,w    
2 t.a*$,    
result :0

转换成为JAVA:
public int match(String regexp, String text) {
    if (regexp.charAt(0) == '^') {
     return matchhere(substr(regexp, 1), text);
    }
    int i = 0;
    do {
     text = substr(text, i++ > 0 ? 1 : 0);
     if (matchhere(regexp, text) == 1) {
        return 1;
     }
    } while (text.charAt(0) != '\0');
    return 0;
}
public int matchhere(String regexp, String text) {
    System.out.println("2 " + regexp + "," + text);
    char c = regexp.charAt(0);
    if (c == '\0') {
     return 1;
    }
    if (regexp.length() > 1 && regexp.charAt(1) == '*') {
     return matchstar(c, substr(regexp, 2), text);
    }
    if (c == '$' && regexp.length() == 1) {
     return text.charAt(0) == '\0' ? 1 : 0;
    }
    if (text != "\0" && (c == '.' || text.charAt(0) == c)) {
     return matchhere(substr(regexp, 1), substr(text, 1));
    }
    return 0;
}
public int matchstar(char c, String regexp, String text) {
    System.out.println("3 " + c + "," + regexp + "," + text);
    int i = 0;
    do {
     text = substr(text, i++ > 0 ? 1 : 0);
     if (matchhere(regexp, text) == 1) {
        return 1;
     }
    } while (text.charAt(0) != '\0' && (c == '.' || text.charAt(0) == c));
    return 0;
}
private static String substr(String s, int i) {
    if (s != null && s.length() > i) {
     return s.substring(i);
    } else {
     return "\0";
    }
}