[英]Regular expression to extract all words starting with colon
我想使用正則表達式從包含SQL語句的字符串中提取“綁定變量”參數。 在Oracle中,參數以冒號作為前綴。
例如,像這樣:
SELECT * FROM employee WHERE name = :variable1 OR empno = :variable2
我可以使用正則表達式從字符串中提取“ variable1”和“ variable2”嗎? 也就是說,獲取所有以冒號開頭,以空格,逗號或字符串結尾結尾的單詞。
(如果在SQL語句中多次使用相同的變量,我不在乎是否多次獲得相同的名稱;我可以稍后進行排序。)
這可能起作用:
:\w+
這僅表示“冒號,后接一個或多個單詞類字符 ”。
顯然,這假定您擁有一個支持POSIX的正則表達式系統,該系統支持單詞類語法。
當然,這僅匹配單個參考。 為了獲得兩者並跳過噪音,類似這樣的方法應該起作用:
(:\w+).+(:\w+)
如果您的正則表達式解析器支持單詞邊界,
:[a-zA-Z_0-9]\b
請嘗試以下操作:
sed -e 's/[ ,]/\\n/g' yourFile.sql | grep '^:.*$' | sort | uniq
假設您的SQL位於名為“ yourFile.sql”的文件中。
這應該給出一個沒有重復的變量列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.