正則表達式測試器是一款简单实用的正则表达式测试工具,该工具适用于C++编程环境,正则表达式是一种对字符进行模糊匹配的一个公式。在数据有效性验证,查找,替换文本中都可以使用正则表达式 。需要的朋友可以来本站下载!

正則表達式測試器简介
當然其它語言環境也可以用,不過有時候會不准確,因爲發現.NET中有許多的正則表達式調試器,但卻沒有發現適合于C++的,所以自己就用C++編寫了一個正則測試小工具,調用了pcre.dll,測試器運行效果請參見截圖。

如何使用正則表達式
VC2010中可以很方便的使用正則表達式,而無需使用第三方庫:
#include
using namespace std;
加個頭文件
string str="要匹配的字符串";
const regex szReg1( "device\\x20+([^\\n\\20]");
smatch results;
std::string::const_iterator it=str.begin();//取头 std::string::const_iterator end=str.end();//取尾
vector vl; if (regex_search(str,results,szReg1)) { while (regex_search(it,end,results,szReg1)) { vl.push_back(results[1]);//这里就得到分组1 it=results[0].second; }
}
正則表達式摘錄
字符元意義
.匹配單個字符
[ ]指定一个字符类,匹配方括号内的任意字符。例:[abc] 匹配 "a", "b"或 "c"。
^如果^出现在字符类的开始处,它否定了字符类,这个被否定的字符类匹配除却方括号内的字符的字符。如:[^abc]匹配除了"a", "b"和"c"之外的字符。如果^出现在正则表达式前边,它匹配输入的开头,例:^[abc]匹配以"a", "b"或"c"开头的输入。
-在字符類中,指定一個字符的範圍。例如:[0-9]匹配"0"到"9"的數字。
?指明?前的表达式是可选的,它可以匹配一次或不进行匹配。例如: [0-9][0-9]? 匹配"2"或"12"。
+指明?前的表达式匹配一次或多次。例如:[0-9]+匹配"1", "13", "666"等。
*指明*前的表達式匹配零次或多次。
??, +?, *??, +和*的非贪婪匹配版本,它们尽可能匹配较少的字符;而?, +和*则是贪婪版本,尽可能匹配较多的字符。例如:输入"", 则<.*?> 匹配"",而<.*>匹配""。
( ) 分组操作符。例如:(/d+,)*/d+匹配一串由逗号分开的数字,例如: "1"或"1,23,456"。
/转义字符,转义紧跟的字符。例如,[0-9]+ 匹配一个或多个数字,而 [0-9]/+ 匹配一个数字后跟随一个加号的情况。反斜杠/也用于表示缩写,/a 就表示任何数字、字母。如果/后紧跟一个数字n,则它匹配第n个匹配群组(从0开始),例如,<{.*?}>.*?匹配"Contents"。注意,在C++字符串中,反斜杠/需要用双反斜杠//来表示: "//+", "//a", "<{.*?}>.*?"。
$放在正則表達式的最後,它匹配輸入的末端。例如:[0-9]$匹配輸入的最後一個數字。span>
|间隔符,分隔两个表达式,以正确匹配其中一个,例如:T|the匹配"The" 或"the"。
縮寫匹配
縮寫匹配
/a字母、數字([a-zA-Z0-9])
/b空格(blank): ([ //t])
/c字母([a-zA-Z])
/d十进制数 ([0-9])
/h十六進制數([0-9a-fA-F])
/n换行: (/r|(/r?/n))
/q引用字符串(/"[^/"]*/")|(/''''[^/'''']*/'''')
/w一段文字 ([a-zA-Z]+)
/z一個整數([0-9]+)