走过了一程,觉得路上越发颠簸了起来,我低头查看,原来我的代码已经生疏了。
———— Al Tusari
怎么实现一个简单的正则表达式的字符串匹配器? 抄一段代码吧,引自<代码之美>:
/*match :在text中查找regexp*/
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 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;
}
int matchstar (int c,char *regexp,char *text)
{
do {
if (matchhere(regexp,text))
return 1;
}while (*text!='\0' && (*text++ ==c || c== '.'));
return 0;
}
想起了Alan Cox说过的一句话:”线程是为不懂状态机的人准备的“。正则式也如此。
分享到:
相关推荐
正则表达式匹配工具很好很强大 放心使用 内附各种经典正则匹配公式
java通过正则表达式匹配获取MAC(支持windows和Linux)
借用代码之美中的正则表达式匹配代码,供大家学习用。
正则表达式匹配小工具源码 介绍 用于学习正则表达式的方便快捷验证正确性 可以保存正则表达式(使用XML文件存储,使用XmlHelper.cs工具类) 可以换肤,窗体渐变宽度效果
正则表达式匹配器,自己开发的小工具,.net 4.0支持
正则表达式匹配调试工具,
实现3-11正则表达式匹配问题.cpp
面向网络安全的多维正则表达式匹配算法分析.pdf
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。 '.' 匹配任意单个字符 '*' 匹配零个或多个前面的那一个元素 所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符...
主要介绍了JavaScript正则表达式匹配<div><style>标签 的相关资料,需要的朋友可以参考下
本文是对正则表达式匹配算法的一个小结,主要分三部分:1.经典算法;2.并行算法;3.过滤算法。本文只是小结,如需要详细了解个算法,请参考个算法的相关论文。
PHP 正则表达式匹配汉字、字母、数字、下划线
如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单。如果你不熟悉这个术语,那么“正则表达式”(Regular Expression)就是一个字符构成的串,它定义了一...
这个工具主要用于正则表达式学习中正则式的匹配检测!绝对 正点
正则表达式匹配(自动转换)无需在为正则表达式而烦恼啦
易语言正则表达式匹配中文源码,正则表达式匹配中文,搜索
易语言正则表达式类匹配中文源码,正则表达式类匹配中文,创建,取正则文本,替换,取匹配数量,取匹配文本,取子匹配文本,取子匹配数量
正则表达式的语法很令人头疼,即使对经常使用它的人来说也是如此。工作之余整理正则表达式的匹配规则,希望大家喜欢。
JavaScript的RegExp类表示正则表达式,而String和RegExp都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。 ECMAScript v3对JavaScript正则表达式进行了标准化。JavaScript 1.2实现了ECMAScript v3...