最近在寫乙個c++的parser,裡面有乙個功能是要解析出所有有效的標頭檔案。如有檔案片段如下:
#include
#include
#include
#include
#include
#include
/* #include */
/*#include */
/* #include */
/*#include */
#include
/* #include */
/* #include
*/
/*
#include
*/
/*
#include
*/
// #include
// #include
// #include
需要從中檢索出qobject,qstringlist,qvariant,qmap,qvariantmap,qvariantlist,test這幾個有效的標頭檔案(去除注釋掉的)。
要完成這樣的檢索我們有很多方法,正規表示式是一種比相對比較便捷的方法。在這裡要匹配的標頭檔案要去除注釋掉的部分,實質上也就是把前面是/*或者//的情況過濾掉。對應在正規表示式中我們可以使用負前後查詢(負零寬度斷言)來實現。表示式如下:
(?]*(?!\s*\*/\s*)
正規表示式 非貪婪匹配
先來看個例子 final static string text 999www.chinoukin.com 888 final static string regex public static void main string args 預想輸出結果 999 b 888 b 實際輸出結果 999 b...
匹配注釋的正則標的是 正規表示式
正規表示式語言由兩種基本字元型別組成 原義 正常 文字字元和元字元。元字元使正規表示式具有處理能力。所謂元字元就是指那些在正規表示式中具有特殊意義的專用字元,可以用來規定其前導字元 即位於元字元前面的字元 在目標物件中的出現模式。常用的元字元 說明 匹配除換行符以外的任意字元 w 匹配字母或數字或下...
部分正規表示式
d 非負整數 正整數 0 0 9 1 9 0 9 正整數 d 0 非正整數 負整數 0 0 9 1 9 0 9 負整數 d 整數 d d 非負浮點數 正浮點數 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 正浮點數 d d 0 0 非正浮點數 負浮點數 ...