带’*’号字符串的匹配
目标:
判断源字符串中是否含有指定子串,子串可能会有*号通配符。
初步测试没问题。记录下来。后面要是有问题再来纠正。
#include <string>
using namespace std; // 带*号通配符的字符串匹配,'*'代表任意字符串,包括空字符串
bool WildcardCaptureA(const char* lpszSour, const char* lpszMatch)
{
bool lbRet = false;
do
{
const char* lpszSrcStr = lpszSour;
const char* lpszMatchStr = lpszMatch; // 不用比较的条件
if(NULL == lpszSrcStr || 0 == lpszSrcStr[0]
|| NULL == lpszMatchStr || 0 == lpszMatchStr[0])
break; // 排除首部的*号
while('*' == lpszMatchStr[0])++lpszMatchStr;
if(0 == lpszMatchStr[0]) // 全是*号,则认为任何字符串都匹配
{
lbRet = true;
break;
} string loStrWord;
// 取出第一个子串
while('*' != lpszMatchStr[0] && 0 != lpszMatchStr[0])
{
loStrWord.push_back(lpszMatchStr[0]);
++lpszMatchStr;
} // 匹配
lpszSrcStr = strstr(lpszSrcStr, loStrWord.c_str());
if(NULL == lpszSrcStr)
break; // 继续匹配
if(0 != lpszMatchStr[0] && false == WildcardCaptureA(++lpszSrcStr, lpszMatchStr))
break; lbRet = true;
} while (false);
return lbRet;
} // 带*号通配符的字符串匹配,'*'代表任意字符串,包括空字符串
bool WildcardCaptureW(const wchar_t* lpszSour, const wchar_t* lpszMatch)
{
bool lbRet = false;
do
{
const wchar_t* lpszSrcStr = lpszSour;
const wchar_t* lpszMatchStr = lpszMatch; // 不用比较的条件
if(NULL == lpszSrcStr || 0 == lpszSrcStr[0]
|| NULL == lpszMatchStr || 0 == lpszMatchStr[0])
break; // 排除首部的*号
while('*' == lpszMatchStr[0])++lpszMatchStr;
if(0 == lpszMatchStr[0]) // 全是*号,则认为任何字符串都匹配
{
lbRet = true;
break;
} wstring loStrWord;
// 取出第一个子串
while('*' != lpszMatchStr[0] && 0 != lpszMatchStr[0])
{
loStrWord.push_back(lpszMatchStr[0]);
++lpszMatchStr;
} // 匹配
lpszSrcStr = wcsstr(lpszSrcStr, loStrWord.c_str());
if(NULL == lpszSrcStr)
break; // 继续匹配
if(0 != lpszMatchStr[0] && false == WildcardCaptureW(++lpszSrcStr, lpszMatchStr))
break; lbRet = true;
} while (false);
return lbRet;
}
带’*’号字符串的匹配的更多相关文章
- (转)MySQL数据表中带LIKE的字符匹配查询
MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56 百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...
- Delphi 自带的字符串分割函数split
下面介绍Delphi自带的字符串分割函数,根据你的需要来使用. 1.ExtractStrings function ExtractStrings(Separators, WhiteSpace: TSy ...
- js获取带#号链接后的参数
现在许多的主流网站都将'#'大规模用于重要URL中,我们通过正则表达式和window.location.search获取参数已经行不通了. 一.'#'号是什么 1.#代表网页中的一个位置.其后面的字符 ...
- url带#号,微信支付那些坑
现在前端很多框架的前端路由都带#号,主要为了做到无刷新跳转页面. 在微信公众号做微信支付时,配置的支付路径比如是http://www.eee.com/#/order,在调微信支付的方法时错误信息是'U ...
- Oracle添加数据报文字与格式字符串不匹配错误
今天在学习Oracle时碰到一个错:文字与格式字符串不匹配. 我在Oracle数据库中创建了一张表: --创建员工表employee create table employee ( empon ) n ...
- oracle文字与格式字符串不匹配的解决
oracle文字与格式字符串不匹配的解决 oracle的日期时间类型 在往oracle的date类型插入数据的时候,记得要用to_date()方法. 如insert into CUSLOGS(STAR ...
- Java字符串的匹配问题,String类的matches方法与Matcher类的matches方法的使用比较,Matcher类的matches()、find()和lookingAt()方法的使用比较
参考网上相关blog,对Java字符串的匹配问题进行了简单的比较和总结,主要对String类的matches方法与Matcher类的matches方法进行了比较. 对Matcher类的matches( ...
- java.sql.SQLException:ORA-01861:文字和格式字符串不匹配
1.错误描述 java.sql.SQLException:ORA-01861:文字和格式字符串不匹配 2.错误原因 字段名为statis_date在数据库中存储的数据类型是Date,而在Java中拼接 ...
- 异常-----java.sql.SQLException:ORA-01861:文字和格式字符串不匹配
1.错误描述 java.sql.SQLException:ORA-01861:文字和格式字符串不匹配 2.错误原因 字段名为statis_date在数据库中存储的数据类型是Date,而在Java中拼接 ...
随机推荐
- ASCII码表及键盘码表。
ASCII码表 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 . 1 SOH 33 ...
- JavaScript高级编程II
原文地址: http://www.onlamp.com/pub/a/onlamp/2007/08/23/advanced-javascript-ii.html?page=1 在前面的文章中, ...
- SlidingMenu导入编译用法--Eclipse和IDEA
非常多側滑的应用都用的是开源库SlidingMenu, 效果不错,下面是我用上的效果图,因为近期换成了IDEA(IntelliJ)编辑器,昨天上网找了全部的教程都是关于在Eclipse导入的方法,摸索 ...
- [转] java中注解的使用与实例
注解目前非常的流行,很多主流框架都支持注解,而且自己编写代码的时候也会尽量的去用注解,一时方便,而是代码更加简洁. 注解的语法比较简单,除了@符号的使用之外,它基本与Java固有语法一致.Java S ...
- js禁止浏览器滚屏方法
在有些需求中需要对页面进行限制页面的查看权限,阻止用户滚动浏览器.那么我们就要禁止鼠标的滚动事件,并且如果浏览器的滚动事件一旦触发我们就将滚动条重置为0就可以了.以下是具体代码: //出现滚动值立马归 ...
- TCP Linger的坑
昨天和同事奋战几个小时,解决了一个linger造成的bug. 现象是这样的,这是一个我从原型接手,扩充了各种功能成为可用代码的epoll实现的非阻塞socket server程序,接收大量的短连接,测 ...
- HUD 1251 难题统计
/* 这题倒是没啥难度 字典树可搞 但是吧 空间是个问题 开始写成这样 struct node { int next[27],sum[27]; bool over; }t[maxn]; 死活过不了 开 ...
- ado.net(1)
connection对象处于最顶层,是所有数据请求的关口 数据库连接过程 SqlConnection theConnection = new SqlConnection(); //创建一个connec ...
- jQuery幻灯插件:Nivo Slider
使用步骤 1.引入css文件 default.css 设置展示插件所需的样式,像控制导航键,导航按钮样式,当然你可以自己写个样式 nivo-slider控制图片样式,插件所需的CSS文件 <li ...
- 微软分布式缓存 appfabric
appfabric为微软自家产的分布式缓存解决方案,随dotnet4.0一起发布.目前版本为1.1