1. 程式人生 > >C/C++11 正則表示式替換檔案內容

C/C++11 正則表示式替換檔案內容

直接上程式碼,YFile只不過是對fstream的封裝

#include <iostream>
#include <string>
#include <regex>
using namespace std;
string ReadFileData(const string &strFile);

string RegReplace(const string &data, const string &strKey, const string &strValue);

void WriteFileData(const string
&strFile, const string &strData); void string_replace(std::string &strBig, const std::string &strsrc, const std::string &strdst) { std::string::size_type pos = 0; std::string::size_type srclen = strsrc.size(); std::string::size_type dstlen = strdst.size(); while
((pos = strBig.find(strsrc, pos)) != std::string::npos) { strBig.replace(pos, srclen, strdst); pos += dstlen; } } /* argv[0] argv[1] File location argv[2] regexp argv[3] the stuff u need to replace */ int main(int argc,char *argv[]) { string data = ReadFileData(argv[1
]); if (data.empty()) { cout << "ReadFileData Error!" << endl; return -1; } data = RegReplace(data, argv[2], argv[3]); if (data.empty()) { cout << "RegReplace Error!" << endl; return -1; } WriteFileData(argv[1],data); return 0; } string ReadFileData(const string &strFile) { YFile file(strFile.c_str()); file.Open(READONLY); auto strData = file.ReadAll(); file.Close(); return strData; } string RegReplace(const string &data,const string &strKey, const string &strValue) { string strKey2 = strKey; string strResult; regex reg(strKey2); smatch result; if (!regex_search(data, reg)) { return ""; } strResult = regex_replace(data, reg, strValue); if(strResult.empty()) { return ""; } return strResult; } void WriteFileData(const string &strFile,const string &strData) { YFile file(strFile.c_str()); file.Open(WRITEONLY); file.Write(strData.c_str()); file.Close(); }

相關推薦

C/C++11 表示式替換檔案內容

直接上程式碼,YFile只不過是對fstream的封裝 #include <iostream> #include <string> #include <regex> using namespace std; string R

C#/JS 利用表示式 替換/刪除 img 裡面的 width height

JS: function test() { var str = "<img title=\"\" alt=\"\" align=\"\" src=\"/kindeditor/attached/image/20161214/20161214162

C#中利用表示式檢測檔案路徑的合法性

專案中少不了讀取或設定檔案路徑的功能,如何才能對輸入的路徑是否合法進行判斷呢?用正則表示式是個不錯的方式。我們都知道檔案路徑的字串一般格式,首先是碟符,一般是abcde等字幕,碟符後用冒號隔開,然後用“\”隔開各層資料夾,如:F:\Funny\22\renxi,

C++11--表示式<regex>

/* 正則表示式:一個指定的模式用來對文字中的字串提供精確且靈活的匹配 */ #include <regex> using namespace std; int main() { string str; while (true) { cin >> str;

C++11--表示式

本文主要參考為《C++Primer第五版》  0.常用正則表示式 中文字元:[\u4e00-\u9fa5] 雙位元組字元(包括漢字在內):[^\x00-\xff] 空白符:\n\s*\r Email地址:[\w!#$%&

c++11表示式(一)——匹配模式(pattern)

一、作用    pattern 是一個c++字串,它作用是給出一匹配規則,去檢測給定字串是否具備這種拼接規則。二、模式字串的語法規則      需要插入一句題外話,在特殊元字元中會用到\,對於c/c++而言它是個特殊字元,若我們需要一個“斜槓"時候需要   在其前面加一個\,

C++】regex 表示式

    正則表示式是一種描述字元序列的方法,是C++11標準庫中新加入的強大工具。正則表示式是一種用於字串處理的微型語言,適用於一些與字串相關的操作。C++11包含了對以下幾種語法的支援:ECMAScript、basic、extended、awk、grep和egrep。C++

C# 中使用表示式 Regex.Matches方法的幾個應用

用於正則表示式的 Regex.Matches靜態方法的幾種用法: //①正則表示式 = > 匹配字串 string Text = @"This is a book , this is my book , Is not I

C# Regex 深入表示式

###匹配字串——從一段資料中提取自己所需要的資料資訊### Regex regex = new Regex(正則表示式);Regex regex = new Regex(正則表示式, RegexOptions.None | RegexOptions.IgnoreCase |

C#】利用表示式判斷輸入是否為純數字、容器類

容器類、正則表示式在幾乎所有程式語言都存在的東西。很常用也很使用。下面用如下的一個控制檯小程式說明C#的正則表示式與容器類的應用。 開始直接輸出在C#定義好的資料字典Dictionary,這就是Java與Python的HashMap 之後定義一個存int的List,讓使用者

C#中的表示式物件[轉載]

Console.WriteLine(Regex.Match(strTarget,strRegex1,RegexOptions.IgnoreCase).Groups[1].Captures.Count);

C#中的表示式使用

最初它是在UNIX環境中開發的,與Perl一起使用得比較多。Microsoft把它移植到Windows中,到目前為止在指令碼語言中用得比較多。 注意,.NET正則表示式引擎是為相容Perl 5的正則表示式而設計的,但有一些新特性。 也就是說,.net遵守了perl的正則表示式

C/C++高效的表示式庫PCRE/PCRE++

寫在前面:本文是《深入淺出C/C++中的正則表示式庫》系列的第三篇,本文的主要內容是介紹PCRE和PCRE++,因為它們兩個是很有淵源的,所以放在一起講。 1. 什麼是PCRE? 什麼是PCRE++? PCRE,全稱是Perl Compatible Regular Expressions。從名字我們可以看出

C# 中使用表示式驗證電話號碼、手機號、身份證號

驗證電話號碼的主要程式碼如下: public bool IsTelephone(stringstr_telephone) { returnSystem.Text.RegularExpressions.Regex.IsMatch(str_telephone,@

C#中的表示式(定位元字元)

定位元字元 我們經常在正則表示式字串前面加上@字元,這樣不讓編譯器去解析其中的轉義字元,而作為正則表示式的語法(元字元)存在。 字元 說明 \b 匹配單詞的開始或結束 \B 匹配非單詞的開

C#中使用表示式驗證電話號碼、手機號、身份證號(轉)

驗證電話號碼的主要程式碼如下:    public bool IsTelephone(stringstr_telephone)    {    returnSystem.Text.RegularExpressions.Regex.IsMatch(str_telephone,@"^(\d{3,4}-)?\d

C#拾遺】——表示式RegEx

前提     公司內部推行安全制度,要求密碼必須是八位以上,而且必有至少包含一個小寫或者大寫字母,數字,特殊字元,面對這樣的密碼,感覺領導也是夠操心的了啊。在公司小編真是閒啊,所以動手實現了一下,後來

C#語法:表示式 --Trim()的實現

正則表示式匹配輸入文字的模式 常用元字元 程式碼 說明 .                      匹配除換行符以外的任意字元。 \w 匹配字母或數字或下劃線或漢字。 \s  匹配任意的空白符。 \d 匹配數字。 \b 匹配單詞的開始或結束。

獲得某個資料夾下的符合表示式檔案地址

根據使用者需求列出某個資料夾下所有滿足的檔案地址    思路:      1.獲得使用者需要查詢的資料夾和對檔名稱的需求(正則表示式)          使用

【Python3 爬蟲學習筆記】基本庫的使用 11—— 表示式 4

4. findall() search()方法可以返回匹配正則表示式的第一個內容,但是如果想要獲取匹配正則表示式的所有內容,就要藉助findall()方法了。該方法會搜尋整個字串,然後返回匹配正則表示式的所有內容。 上一節中的HTML文字中,如果想要獲得所有a節點的超連結、歌手和歌名,就