正则表达式匹配器------代码之美
发布日期:2022-04-04 06:36:26 浏览次数:21 分类:博客文章

本文共 1328 字,大约阅读时间需要 4 分钟。

    重要的、定义明确的、可扩展的基础正则表达式匹配器

#include
using namespace std;//.(句点) 匹配任意的当个字符 //^ 匹配输入字符串的开头//$ 匹配输入字符串的结尾//* 匹配前一个字符的零个或者多个出现/*match: 在text中查找regexp*/int matchhere(char*regexp, char*text);int matchstar(int c, char *regexp, char *text);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;}/*matchhere:在text的开头查找regexp*/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:在text的开头查找C*regexp*/int matchstar(int c, char *regexp, char *text){ do { /*通配符 * 匹配零个或多个实例*/ if (matchhere(regexp, text)) return 1; } while (*text != '\0' && (*text++ == c || c == '.')); return 0;}/*matchstar:搜索c*regexp的出现最左以及最长的匹配*/int matchstar(int c, char *regexp, char*text,int n=0){ char *t; for (t = text; *t != '\0' && (*t == c || c == '.'); t++) ; do {/*通配符*匹配零个或者多个实例*/ if (matchhere(regexp, t)) return 1; } while (t-- > text); return 0;}char a[100], b[100];int main() { while (cin >> a >> b) cout << match(a, b) << endl;}

 

转载地址:https://www.cnblogs.com/l2017/p/9304382.html 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:c++实现多叉树树形显示(适合家谱的显示)
下一篇:Quicksort------代码之美

发表评论

最新留言

不错!
[***.144.177.141]2024年03月01日 10时33分27秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

oracle外部表ora29913,从外部表中选择sqlplus错误:ORA-29913:执行ODCIEXTTABLEOPEN标注时出错... 2019-04-21
oracle负载均衡方案,Oracle负载均衡配置代码 2019-04-21
oracle11g 多了个 client,Oracle10g Client & Oracle11g DB同时安装发生OCI Error 2019-04-21
decfloat转换成oracle种类型,Oracle GoldenGate 19.1新特性 2019-04-21
linux一个网卡绑定多个端口,RedHat实现多网卡绑定 2019-04-21
linux内核用什么调试,什么是开发/调试Linux内核最有效和最优雅的方式 2019-04-21
linux实现时间服务器视频,linux实现时间同步有哪几种方法 2019-04-21
linux hadoop etc目录,题目Linux平台下Hadoop的安装配置 2019-04-21
linux内存替换,求助:redhat9内核模块替换sys_execve导致系统内存耗尽问题 2019-04-21
Linux启动屏幕打印日志,linux启动时如何在屏幕上找到文本显示?这... 2019-04-21
vuejs linux windows,vue.js环境在window和linux安装 2019-04-21
linux能安装音乐软件吗,Linux上如何安装使用音乐软件SoundCloud 2019-04-21
linux 日志 停止滚动,linux – syslog在日志轮换后停止记录 2019-04-21
linux测试网页装载时间,如何用Flood测试Web服务器响应时间 2019-04-21
linux虚拟机处理器设置,虚拟机linux cpu核数 2019-04-21
linux定时任务案例,Linux定时任务案例 2019-04-21
linux使用shell函数扩充命令,Linux Shell系列教程之(十五) Shell函数简介 | Linux大学... 2019-04-21
putchar(c1)在C语言中表示,C语言中的getchar和putchar详解 2019-04-21
miui 8 android对应关系,小米回应MIUI版本和安卓版本没有对应关系 你怎么看 2019-04-21
android的list获取点击的值,使用PreferenceActivity时,如何获取ListPreference中选中的值... 2019-04-21