简易正则匹配,实现*和?
来源:互联网 发布:数学画图软件 编辑:程序博客网 时间:2024/05/31 13:15
一道常见的面试题,简易的正则匹配,实现*和?
/* * 简易正则表达,匹配*和? * *表示匹配任意个字符 * ?表示匹配一个字符 */#include <stdio.h>#include <stdlib.h>int ismatch(char* regexp, char* str){//如果匹配的字符串为空if(*str == '\0'){if(*regexp == '\0'){return 1;}else{while(*regexp == '*')++regexp;return *regexp == '\0';}}//匹配的字符串不为空,而正则表达式为空if(*regexp == '\0')return 0;//两者都不为空,比较第一个字符if(*regexp == *str) //如果首字符相同,则比较两者的子串{return ismatch(++regexp, ++str);}else //如果首字符不同 {if(*regexp == '?'){return ismatch(++regexp, ++str);}else if(*regexp == '*') //这个递归是匹配*的核心代码,但是这种写法理解起来很简单,但是存在重复计算{return ismatch(regexp, ++str) || ismatch(++regexp, ++str);}else{return 0;}}} int main(){char reg[256];char str[256];int ret;while(scanf("%s %s", reg, str) != EOF){ret = ismatch(reg, str);printf("%s\n", ret ? "yes" : "no");}}
阅读全文
0 0
- 简易正则匹配,实现*和?
- 正则表达式简易实现
- 实现正则表达式的*和?匹配
- 实现支持“.”和“*”的正则表达式匹配
- 括号匹配简易C++实现
- 实现正则匹配,匹配模式
- 正则表达式匹配(.和*)
- 正则匹配---C语言实现
- c++实现正则表达式匹配
- 正则表达式匹配java实现
- java正则实现身份证号码匹配
- 正则表达式懒惰匹配,和贪婪匹配
- 正则中的“贪婪匹配”和“懒惰匹配”
- Java 正则 包含匹配 和 全匹配
- scala中的正则匹配和模式匹配
- python 利用正则实现简易计算器
- 正则分组和边界匹配
- 中文和手机号码正则匹配
- RabbitMQ第三篇:java实现HelloWorld
- 剑指offer 05 从尾到头打印链表
- Java简介
- DNS域名解析过程
- app项目经验总结
- 简易正则匹配,实现*和?
- Android主线程如何向分线程发送消息
- js获取手机型号和手机操作系统版本号
- qsort函数用法说明2
- 2.1.24—线性表—Single Number II
- 字符串
- HTML/css理解before:after:学习之-导航条案例2
- Ajax上传文件
- 数据结构——复习C语言