博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代码之美 短小精悍的正则表达式匹配器
阅读量:4978 次
发布时间:2019-06-12

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

支持的元字符有'^', '$', '.', '*',beautiful

ExpandedBlockStart.gif
代码
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(
char
 c, 
char
 
*
regexp, 
char
 
*
text)
{
  
do
 {
    
if
 (matchhere(regexp, text))
      
return
 
1
;
  } 
while
 (
*
text 
!=
 
'
\0
'
 
&&
 (
*
text
++
 
==
 c 
||
 c 
==
 
'
.
'
));
  
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
;
}

 

 

转载于:https://www.cnblogs.com/wsns/archive/2010/09/08/1821686.html

你可能感兴趣的文章
java反射
查看>>
js表单反显
查看>>
浪潮之巅阅读笔记二
查看>>
CSS内嵌样式实现打字效果
查看>>
从 HTTP 到 HTTPS 再到 HSTS
查看>>
CentOS7和CentOS6的区别
查看>>
关系型数据库事务二:隔离级别
查看>>
送给IT新人--多看、多问、多写
查看>>
MySQL常用命令
查看>>
今天端午节
查看>>
UOJ #79. 一般图最大匹配
查看>>
应用程序域的用法
查看>>
InfluxDB执行语句管理(query management)
查看>>
大都市的同事爱。。。
查看>>
Yeoman官方教程:用Yeoman和AngularJS做Web应用
查看>>
ant 小结
查看>>
spring boot 简单配置 mybatis
查看>>
FPC and Qt
查看>>
08 MySQL存储引擎
查看>>
js 正则表达式精确匹配(01)
查看>>