[英]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.