簡體   English   中英

正則表達式提取所有以冒號開頭的單詞

[英]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+)

為了能夠自己處理這種簡單的情況,您應該看看regex quickstart

同時使用:

:\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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM