程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 正則表達式c語言經典實現

正則表達式c語言經典實現

編輯:關於C

/*
 * test.c
 *
 *  Created on: 2012-12-4
 *      Author: Administrator
 */
#include <stdio.h>
int matchhere(char *,char *);
int matchstar(int c,char *regexp,char *text){
 char *t;
 for(t = text; *t != '\0' &&(*t == c || c=='.');t++);
 do{
  if(matchhere(regexp,t))return 1;
 }while(t-->text);
 return 0;
}
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] != '\0')&&(regexp[0]=='.'|| regexp[0]==text[0])) {
  return matchhere(regexp+1,text+1);
 }
 return 0;
}
int match(char *regexp, char *text) {
 if (regexp[0] == '^')
  return matchhere(regexp + 1, text);
 do {
  if (matchhere(regexp, text)) {
   return 1;
  }
 } while (*text++ != '\0');
 return 0;
}
int main(){
 char *regexp = ".*$";
 char *text = "123";
 if(match(regexp,text)){
  puts("ok");
 }
 return 0;
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved