正則表達式妙用

正則表達式用處非常大,規(guī)則也是復(fù)雜難記,很容易讓人望而卻步。

以下示例也只是用到了其中的兩個特性。對于這種難記又難用,but 功能強大的工具。個人一貫宗旨是:熟悉工具有哪些特性,能用來干什么,不會用去查,反正資源那么多

  • 正則表達式 - 分組
filterCondition = Regex.Replace(conditions, @"(?<chinese>[\u4e00-\u9fa5]+)", "\"${chinese}\"");

blog: C#正則表達式替換

用于工作中(很長,慢慢拼湊出來的)

背景:由于工作內(nèi)容是替換整個底層框架,數(shù)據(jù)庫也由 SQLServer 改為 PostgreSQL,而前端存在大量的 WHERE 子句,不太可能逐個修改前端。由于中文以及 SQL 語法 的細小差異,造成后端服務(wù)無法解析,需要經(jīng)過一層轉(zhuǎn)換。

由于之前被正則表達式徹底征服過,查閱收藏了一些關(guān)于正則的高級用法,奈何記不住。

工作中遇到該問題時,腦海中出現(xiàn)一絲疑問:能不能用正則來解決?
于是就有了下面一串冗長的字符串,功能就是提取 where 子句字段名,并加上雙引號

  • 提取 操作符前的名字,并加上雙引號

如何驗證:https://regexr.com/

((\b|[\u4e00-\u9fa5])*(\w*|[\u4e00-\u9fa5])+(?=(\s*)(\>=|\>|=|\<\>|!=|\<|\<=|like|Like|LIKE|(\s+)is(\s+))(\s*)(\b|'|%|[\u4e00-\u9fa5]+)))
  • 測試用例(純粹測試)
啊a is auu管材 is null and cad圖層>= %100% and bcd   <= 300 or  acbb is not null ac<=hht or ccc換行 is null and acd中 is null CAD集 !=  '%新城、or a老城管 <> 愛%科技20181219v2.0 or a like 'bt'

cad <= '注記'   <= htth
  • C# 實現(xiàn)
// 匹配字段,加雙引號
filterCondition = Regex.Replace(conditions, @"(?<field>(\b|[\u4e00-\u9fa5])+(\w*|[\u4e00-\u9fa5])+(?=(\s*)(\>=|\>|=|\<\>|!=|\<|\<=|like|(\s+)is(\s+))(\s*)(\b|'|%|[\u4e00-\u9fa5]+)))", "\"${field}", RegexOptions.IgnoreCase);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 6,011評論 0 9
  • 幾個正則表達式編輯器 Debuggex :https://www.debuggex.com/ PyRegex:ht...
  • 為什么要做這件事 做事情總得有些理由才能持久的執(zhí)行下去,因為最近學(xué)習(xí)html5語言,常規(guī)使用的很多信息需要表單來進...
    TsingQue閱讀 2,271評論 0 8
  • 這樣的失眠之後,往往會陷入奇怪的夢境中。 有時候,是一片櫻花爛漫的山林,風(fēng)吹過,粉粉的小花瓣飄落,我不知是我,立在...
    圓果青青子閱讀 168評論 0 0
  • 金剛書院《智慧天天見》一萬小時定律實修作業(yè)分享 張蓮蓮2019年2月3日打卡踐行第440天 瑜伽早課共修:月累計2...
    zll蓮蓮閱讀 140評論 0 0

友情鏈接更多精彩內(nèi)容