boost:regex 比對不正確 |
答題得分者是:GrandRURU
|
dadai
一般會員 發表:29 回覆:31 積分:12 註冊:2009-01-17 發送簡訊給我 |
小弟又來請教了 m(_ _)m
我在下面的這個網頁上輸入我想測試的Reg Exp 是可以match的 http://blog.roodo.com/rocksaying/archives/2670695.html 但是我用 boost::regex 測試卻一直無法match 以下是我的程式碼 [code cpp] boost::wregex e( L"\\b(00107800|01199700)\\d{7}\\b" ); if( boost::regex_match(Edit1->Text.c_str(),e) ) ShowMessage( L"MATCH!!" ); else ShowMessage( L"Not MATCH!!" ); [/code] 待測試的資料如下: 001078000012345 "001078000012345" 以上兩筆資料在網頁上測試都是沒問題的 但是用 boost::regex_match 的結果都是不 match 請問是我在使用 regex 有什麼遺漏的地方嗎? 編輯記錄
dadai 重新編輯於 2010-11-09 21:48:50, 註解 無‧
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
你的排版…很亂,如果可以,請稍微修一下吧
不知道你是用 cb & regex 是用哪一版,我是用 BCB6 boos 1.44版來測,另一方面,官方教學也蠻簡單的,你可以看一下。 做一些調整後可以match到你要的字串,給你參考一下: [code cpp] //--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" #include "D:/boost_1_44_0/boost/regex.hpp" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { String tmpString = L"^\\b(00107800|01199700)\\d{7}\\b"; boost::regex e( tmpString.c_str() ); if( boost::regex_match(Edit1->Text.c_str(),e) ) ShowMessage( L"MATCH!!" ); else ShowMessage( L"Not MATCH!!" ); } //--------------------------------------------------------------------------- [/code] ===================引 用 dadai 文 章=================== 小弟又來請教了 m(_ _)m 我在下面的這個網頁上輸入我想測試的Reg Exp 是可以match的 http://blog.roodo.com/rocksaying/archives/2670695.html 但是我用 boost::regex 測試卻一直無法match 以下是我的程式碼 [code cpp] boost::wregex e( tmpString.c_str() ); ShowMessage( L"MATCH!!" ); ShowMessage( L"Not MATCH!!" ); [/code]待測試的資料如下: 001078000012345 "001078000012345" 以上兩筆資料在網頁上測試都是沒問題的 但是用 boost::regex_match 的結果都是不 match 請問是我在使用 regex 有什麼遺漏的地方嗎? |
dadai
一般會員 發表:29 回覆:31 積分:12 註冊:2009-01-17 發送簡訊給我 |
冏....
我在編輯頁面上看起來很正常 怎麼到這邊就整個亂掉了 抱歉讓大家傷眼力了....Orz 而且看了 GrandRURU 的講解 才發現問題根本與 Regex 沒關係 是自己疏忽忘記 \ 前要再補一個 \ 了 我的 boost 是 1.35 版 之前我也曾經測試過其他 Regular Expression 是可以正常通過測試的 但是目前遇到某一個字串一直無法通過測試 可能是哪邊有所疏忽吧...Orz 感謝 GrandRURU 的指導 ===================引 用 GrandRURU 文 章=================== 你的排版…很亂,如果可以,請稍微修一下吧 不知道你是用 cb & regex 是用哪一版,我是用 BCB6 boos 1.44版來測,另一方面,官方教學也蠻簡單的,你可以看一下。 做一些調整後可以match到你要的字串,給你參考一下: [code cpp] //--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" #include "D:/boost_1_44_0/boost/regex.hpp" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { String tmpString = L"^\\b(00107800|01199700)\\d{7}\\b"; boost::regex e( tmpString.c_str() ); if( boost::regex_match(Edit1->Text.c_str(),e) ) ShowMessage( L"MATCH!!" ); else ShowMessage( L"Not MATCH!!" ); } //--------------------------------------------------------------------------- [/code] |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |