vc6.0下 使用boost regex正则表达式匹配带中文的任意字符

原创 2013年12月05日 20:15:05

源代码:

boost::cmatch result2;

// 特殊字符".""\"从字符串转为正则表达式需要加"\",在正则表达式中要单纯的表示反斜杠字符页需要加"\",所以要匹配".\ "应该写为"\\.\\\\"
 CString csReg = "\\.\\\\(\\S+)\\.[tsp|enx|ts|tc|tsw]";  // 匹配 以  .\  开头 .tsp|.enx|.ts|.tc|.tsw 结尾的任意字符串,并获取匹配到的字符串
 boost::regex regText;
 regText = csReg;
 string sToMatch((LPCTSTR)csSourceStr);
 if ( !boost::regex_search(sToMatch,result2,regText))
 {
  return FALSE;
  }

  //下标从1开始, result2[0] 不正确
 for (size_t i = 1; i < result2.size(); ++i)  
 {         
  if (result2[i].matched)

   {
   std::string strIs(result2[i].first,result2[i].second);
   csDestStr = strIs.c_str();
  }
 }
 return TRUE;

 

测试代码未进行宽字符转换:

BOOL CSelectTestInstance::regexMatchStr(const CString &csSourceStr,CString &csDestStr)
{
 boost::cmatch result2;
 boost::regex regText("[A-Za-z0-9_\x80-\xFF]+");//如果匹配的字符串为./硬测自动化/自动化.tc ,匹配的结果只能匹配到“硬测自动化”,不知为何

 string sToMatch((LPCTSTR)csSourceStr);//csSourceStr = ./硬测自动化_A_1.tc
 if ( !boost::regex_search(sToMatch,result2,regText))
 {
     return FALSE;
  }
 for (size_t i = 0; i < result2.size(); ++i)  
 {         
  if (result2[i].matched)
   {
   std::string strIs(result2[i].first,result2[i].second);
   csDestStr = strIs.c_str();
   }
 }
 return TRUE;
}

[Boost]_[使用boost正则表达式查找所有字符串]

场景: 1.比如在html中查找出现过的标签,好提取图片地址.
  • infoworld
  • infoworld
  • 2014年04月21日 18:47
  • 3773

BOOST正则表达式库处理中文

如果中文字符串保存在char数组中,需要先将它转换成wchar_t型的,0x4e00-0x9fa5表示汉字。bool CheckNameStyle(const char * str){    wcha...
  • sudaobo
  • sudaobo
  • 2007年02月14日 10:49
  • 2975

C++正则表达式处理Boost库使用

http://www.wuzesheng.com/?p=965 写在前面:本文是《深入浅出C/C++中的正则表达式库》系列的第二篇,如果对本文感兴趣,相信你也会对《深入浅出C/C++中的正则表达式库...
  • Eric_Wilson
  • Eric_Wilson
  • 2015年11月15日 16:33
  • 1630

C#正则表达式匹配任意字符

不得不说正则很强大,尤其在字符串搜索上 匹配任意字符,包括汉字,换行符: [\s\S]*....
  • rztyfx
  • rztyfx
  • 2011年11月27日 10:12
  • 10172

【转载】:Boost正则表达式汉字匹配

思路:把字符都转换成宽字符,然后再匹配。需要用到以下和宽字符有关的类:1、wstring:作为STL中和string相对应的类,专门用于处理宽字符串。方法和string都一样,区别是value_typ...
  • sptoor
  • sptoor
  • 2009年12月03日 09:41
  • 2668

使用boost::regex_search进行字符串提取

使用boost::regex_search进行字符串提取   使用正则表达式来能够处理很复杂的字符串,这里只分析以下如何使用boost::regex_search进行字符串提取。...
  • jfkidear
  • jfkidear
  • 2012年03月19日 18:30
  • 7479

C++ Boost 正则表达式用法(转自:吴碧宇的cnblog)

 先看一个网上经典的例子。#include "stdafx.h"#include #include #include #include #include using namespace std;usi...
  • wzqcongcong
  • wzqcongcong
  • 2011年05月08日 22:48
  • 6433

boost::regex处理中文方法

boost::regex处理中文方法 2010-11-18 16:13:21 分类: LINUX 正则表达式库boost::regex在处理中文时,需要使用宽字符 需...
  • oMingZi12345678
  • oMingZi12345678
  • 2014年03月30日 14:50
  • 1617

(四)boost库之正则表达式regex

正则表达式可以为我们带来极大的方便,有了它,再也不用为此烦恼 头文件: #include 1、完全匹配 std::string str("abcd"); boost:...
  • liujiayu2
  • liujiayu2
  • 2016年03月15日 14:35
  • 428

regex 正则表达式

首先贴出两个网址: 第一个《正则表达式30分钟入门教程》 http://deerchao.net/tutorials/regex/regex.htm 第二个 在线正则测试网站 http://t...
  • idea_boy
  • idea_boy
  • 2017年04月16日 16:56
  • 868
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:vc6.0下 使用boost regex正则表达式匹配带中文的任意字符
举报原因:
原因补充:

(最多只允许输入30个字)