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節點的超連結、歌手和歌名,就