最近自己做了個小專案,涉及到了大量的正規表示式匹配和處理,在這裡也和大家分享一下。
我相信接觸過sql server資料庫的很多朋友都知道,它是以"--"開頭來進行注釋的,但你覺得匹配它真的很容易嗎?
讓我們來看一些例子:
--獲取表的count資訊
select
count(*) from t with
(nolock)
--獲取特定值的count資訊
select
count(*) from t with
(nolock)
where v =
'--value'--
獲取表't'的count資訊
select
count(*) from t with
(nolock)
select
*from t --
獲取表t
where p
我們先來試著給出乙個簡單的匹配:
\-\-[^\r\n]*$
你會發現,它連第二條的sql也匹配到了,這是不對的。看起來,我們應該排除"'"裡面的, 我們再來改改:
\-\-[^\'\r\n]$
還是不對,這下雖然第二條的sql沒有匹配,但連第三條的都不匹配了,看起來還是不對。
那到底怎麼樣才能真正匹配到所有的sql注釋呢?
首先我們來總結一下sql注釋的一些特點:
1. 以--開頭
2. 注釋的內容,應該不會被包含在一對''之內
3. 注釋應該只會在最後,前面可以可選的出現一些語句
好了,收集到了這些之後,我們最終的sql注釋的語法也出來了:
\-\-([^\'\r\n](\'[^\'\r\n]\')[^\'\r\n])$
這一下,四條sql的注釋全匹配到了,正規表示式太強大了吧。
這個sql語句有乙個小小問題,就是後面不能有乙個單的單引號存在,否則就會匹配有問題。(因為人們的習慣對於這種分隔符預設是成雙出現的,這個小問題其實也是可以忽略的)
T SQL中的正規表示式
t sql中的正規表示式 將這個udf儲存到你的資料庫中,並確定有授權來執行它。當然,你也得確保執行它的人有執行sp oa xx類擴充套件儲存過程的許可權。這個函式已確保正常執行,並且即便是和com物件一起使用,也還是挺快的。舉例使用正規表示式的乙個地方就是測試特殊字元。我們不搜尋所有的特殊字元,而...
正規表示式之我見 注釋
注釋就是對 的解釋和說明。目的是為了讓別人和自己很容易看懂,一看就知道這段 是做什麼用的。正確的程式注釋一般包括序言性注釋和功能性注釋。分類 語法 說明注釋 comment 這種型別的分組不對正規表示式的處理產生任何影響,用於提供注釋讓人閱讀 正則的注釋語法 comment 例如 1 0 2 d 1...
正規表示式中的注釋
注釋 comment 小括號的另一種用途是通過語法 comment 來包含注釋。例如 2 0 4 d 200 249 25 0 5 250 255 01 d d?0 199 要包含注釋的話,最好是啟用 忽略模式裡的空白符 選項,這樣在編寫表示式時能任意的新增空格,tab,換行,而實際使用時這些都將被...