首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

正则表达式婚配a.txt文件中指定字符

2012-10-11 
正则表达式匹配a.txt文件中指定字符a.txt文本格式如下:aaaa: bbbb cccc: dddd eeee: ffffaaaa: 1323 cccc:

正则表达式匹配a.txt文件中指定字符
a.txt文本格式如下:
aaaa: bbbb cccc: dddd eeee: ffff
aaaa: 1323 cccc: dddd eeee: ffff
aaaa: 234523 cccc: dddd eeee: ffff
aaaa: 46545 cccc: dddd eeee: ffff

要求:定义这样一个字符数组 char cr[]="aaaa: .*";通过这样的字符数组用regcomp()和regexec()函数去匹配a.txt文本。

目的:如果匹配到就输出":" 后边的内容。

补充:不要用sscanf()函数去匹配,因为该函数把相同格式后边的输出来了,并非我想要的结果,

拜托各位c语言大神们了,小弟在此谢谢!!!





[解决办法]
http://topic.csdn.net/u/20111116/11/96be7f40-497f-4ab6-aacc-d3391bbbf237.html

C/C++ code
#include <iostream>#include <string>#include <regex>using namespace std;int main(){    string str("This expression could match from A and beyond. [ expression  express ]");    string rs = "exp\\w*";  // 正则字符串,exp开始的单词    cout << str << endl;    regex expression(rs); // 字符串传递给构造函数,建立正则表达式// regex_match 判断一个正则表达式(参数 e)是否匹配整个字符序列 str. 它主要用于验证文本。// 注意,这个正则表达式必须匹配被分析串的全部,否则函数返回 false.// 如果整个序列被成功匹配,regex_match 返回 True.    bool ret = regex_match(str, expression);    if (ret)        cout << "可以匹配整个文本" << endl;    else        cout << "不能匹配整个文本" << endl;// regex_search 类似于 regex_match, 但它不要求整个字符序列完全匹配。// 你可以用 regex_search 来查找输入中的一个子序列,该子序列匹配正则表达式 e.    ret = regex_search(str, expression);    if (ret)        cout << "能够搜索到 " << rs << endl;    else        cout << "不能搜索" << endl;// regex_replace 在整个字符序列中查找正则表达式e的所有匹配。// 这个算法每次成功匹配后,就根据参数fmt对匹配字符串进行格式化。// 缺省情况下,不匹配的文本不会被修改,即文本会被输出但没有改变。    str = regex_replace(str, expression, string("表达式"));// VC2010或者TR1注意:这里第三个参数要用string()转换// http://www.johndcook.com/cpp_regex.html// started with C++ TR1 regular expressions    cout << str << endl;    return 0;}
[解决办法]
C/C++ code
#include <stdio.h>char ln[80];FILE *f;int d1,d2;int main() { f=fopen("in.txt","r"); if (f!=NULL) {  if (fgets(ln,80,f)!=NULL) {   if (2==sscanf(ln,"%d of %d license(s) by used",&d1,&d2)) {    printf("%d %d\n",d1,d2);   }  } } return 0;} 

热点排行