正規表示式專題

2021-08-31 17:56:54 字數 1291 閱讀 8542

工作中經常遇到分析log檔案, 想從檔案中找到和對應資料的內容,其他的內容不關心.

這樣就想用乙個正規表示式匹配指定字串之外的內容,替換成空的, 剩下就是我們關心的log內容

^(?!.*?正規表示式).*$

需要將rdl報表裡的getcomment( parameters!f0001.value , parameters!f0002.value ,"total", parameters!language.value)函式修改為getcommentforcomment ( parameters!f0001.value , parameters!f0002.value ,"total", parameters!language.value, "reportconnection0107" )。

使用正規表示式裡面的分組進行抓獲,再用\1將中間固定的引數取出,組成新的字串。

%s/getcomment(\(\(\s*\w\+!\w\+.\w\+\s*,\)\\s*"\w\+"\s*,\s*\w\+!\w\+.\w\+\s*\))/getcommentforreport(\1, "reportconnection0107")/gc 

解釋:%為全域性替換,s為替換。後面則是表示式,和正規表示式差不多,注意是*不需要轉義,+ 和 .需要轉義,最後的g代表當前行替換,c代表每次替換需要確認。

目標表示式中有\1,代表抓獲的第乙個字串,多個字串抓獲則依次往下排列。\0表示原始字串。

getcomment\(( *[a-za-z0-9]+![a-za-z0-9]+\.[a-za-z0-9]+ *, *[a-za-z0-9]+![a-za-z0-9]+\.[a-za-z0-9]+ *, *"[a-za-z0-9]+" *, *[a-za-z0-9]+![a-za-z0-9]+\.[a-za-z0-9]+ *)\)

替換為getcommentforreport(\1, "reportconnection0107")

解釋:不知道為何,我無法使用\w\s匹配文字和空格,只能使用[a-za-z0-9]表示(完整的是[a-za-z0-9_])\w,用空格表示\s。

由於rdl開發必然使用visualstudio,所以用vs替換更方便。

getcomment\(\)

依舊替換為getcommentforreport(\1, "reportconnection0107")

解釋:vs除了notepad++/editplus的問題外,還有乙個嚴重的問題就是他抓取的不是分組(),而是抓獲的花括號{}抓捕的字串,官方的稱呼叫做「帶標記的表示式」,詳情可以參考msdn 正規表示式 (visual studio) 。

所以咯,vimer,***~

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 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 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

正規表示式匹配 動態規劃專題

二 題目解析 3.遞迴 給定乙個字串 s 和乙個字元模式 p 實現支援.和 的正規表示式匹配。匹配應該覆蓋整個字串 s 而不是部分字串。輸入 s aa p a 輸出 false 解釋 a 無法匹配 aa 整個字串。輸入 s aa p a 輸出 true 解釋 代表可匹配零個或多個前面的元素,即可以匹...