`

正则表达式匹配

 
阅读更多

走过了一程,觉得路上越发颠簸了起来,我低头查看,原来我的代码已经生疏了。

———— 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正则表达式匹配工具

    Java正则表达式匹配工具是IT领域中一种强大的文本处理工具,它利用正则表达式(Regular Expression)的规则来查找、替换或者提取文本中的特定模式。正则表达式是一种特殊的字符序列,能够帮助程序员或者用户高效地...

    易语言正则表达式匹配中文

    本文将深入探讨易语言中的正则表达式匹配中文的原理、方法以及应用。 正则表达式(Regular Expression)是一种模式匹配的语言,用于描述一种字符串的集合。在易语言中,我们可以通过内置的字符串函数来实现正则...

    正则表达式匹配算法

    这些基础语法是构建正则表达式匹配算法的基础。 接下来,我们可以采用DFA(确定有限状态自动机)或NFA(非确定有限状态自动机)来实现正则表达式的匹配。在这个案例中,C++代码可能是基于NFA实现的,因为NFA通常更...

    正则表达式匹配小工具源码

    本项目提供了一个正则表达式匹配的小工具源码,旨在帮助开发者和学习者快速验证正则表达式的正确性。 该工具的核心功能是验证正则表达式,确保其能正确匹配目标字符串。在开发过程中,正则表达式的调试往往是一项...

    正则表达式匹配调试工具

    为了更好地理解和调试正则表达式,开发者通常会使用专门的正则表达式匹配调试工具。 正则表达式匹配调试工具的功能通常包括以下几点: 1. **实时匹配测试**:用户可以输入正则表达式和待匹配的文本,工具会即时...

    JavaScript正则表达式匹配 div style标签

    在进行正则表达式匹配时,需要构建能够正确描述目标模式的正则表达式。对于`&lt;div&gt;`和`&lt;style&gt;`标签,通常需要考虑的是标签的开始`&lt;div&gt;`、结束`&lt;/div&gt;`,以及它们之间的内容。对于`&lt;style&gt;`标签,需要识别它的开始`...

    cpp-Hyperscan高性能正则表达式匹配库

    《深入理解cpp-Hyperscan:高性能正则表达式匹配库的探索与实践》 在软件开发中,正则表达式是处理文本数据不可或缺的工具,它能够高效地进行模式匹配和搜索。然而,对于大规模数据的处理,传统的正则表达式库可能...

    java通过正则表达式匹配获取MAC(支持windows和Linux)

    java通过正则表达式匹配获取MAC(支持windows和Linux)

    正则表达式匹配(自动转换)

    "正则表达式匹配(自动转换)"指的是通过特定的软件或编程库,将正则表达式应用到文本中,自动进行匹配操作,无需用户手动处理。 在描述中提到的"无需再为正则表达式而烦恼",意味着这样的工具或功能提供了便捷的...

    C++ 正则表达式匹配工具源码

    在"C++ 正则表达式匹配工具源码"中,我们可以期待看到一系列类和函数,它们是基于`&lt;regex&gt;`库实现的,用于解析、编译和执行正则表达式。这些工具可能包括: 1. **正则表达式编译**:`std::regex`类用于创建一个正则...

    正则表达式匹配regex.rar

    在"正则表达式匹配regex.rar"这个压缩包中,包含了以下几个关键文件,它们是理解和使用正则表达式的重要组成部分: 1. **XControl.dll**:这是一个动态链接库文件,可能包含了实现正则表达式匹配功能的函数和类。在...

    基于FPGA的正则表达式匹配引擎设计.pdf

    基于FPGA的正则表达式匹配引擎设计涉及硬件加速技术,它能显著提升正则表达式匹配过程的性能。在深入探讨FPGA设计之前,我们首先需要理解正则表达式匹配引擎的作用以及为什么需要在硬件层面实现加速。 正则表达式...

    易语言正则表达式取网址和名称

    局部变量 匹配结果, 结构体(正则表达式匹配) .局部变量 目标文本, 文本型 = "这里是包含网址的文本,比如 http://example.com 和 www.example.org" .局部变量 网址, 文本型 .程序段 .创建对象 正则表达式对象, ...

    易语言正则表达式类匹配中文

    在易语言中,正则表达式类是一个非常重要的工具,用于处理字符串的模式匹配和查找。在处理中文文本时,这个功能尤为关键,因为中文字符的编码和处理方式与英文有所不同。 正则表达式是用于匹配字符串模式的一种强大...

    正则表达式匹配器

    正则表达式匹配器,自己开发的小工具,.net 4.0支持

    正则表达式匹配/可以自定义正则表达式

    正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它用于匹配字符串...在压缩包文件"正则表达式匹配"中,你可能找到更多关于正则表达式实际应用的实例和教程,这将有助于你加深理解和提升技能。

    基于FPGA的正则表达式匹配算法综述.pdf

    文档“基于FPGA的正则表达式匹配算法综述.pdf”详细介绍了硬件正则表达式匹配的优势,FPGA在正则表达式匹配算法中的基本思想和设计方法。文档根据匹配速度和资源利用率对现有算法进行了分类,并对当前主流算法的优...

    实现3-11正则表达式匹配问题.cpp

    实现3-11正则表达式匹配问题.cpp

Global site tag (gtag.js) - Google Analytics