正则表达式提取所有以冒号开头的单词

Obi*_*obi 3 regex

我想使用正则表达式从包含 SQL 语句的字符串中提取“绑定变量”参数。在 Oracle 中,参数以冒号为前缀。

例如,像这样:

SELECT * FROM employee WHERE name = :variable1 OR empno = :variable2
Run Code Online (Sandbox Code Playgroud)

我可以使用正则表达式从字符串中提取“variable1”和“variable2”吗?也就是说,获取以冒号开头并以空格、逗号或字符串末尾结尾的所有单词。

(如果在 SQL 语句中多次使用同一个变量,我不在乎是否多次获得相同的名称;稍后我可以解决这个问题。)

unw*_*ind 5

这可能有效:

:\w+
Run Code Online (Sandbox Code Playgroud)

这只是意味着“一个冒号,后跟一个或多个单词类字符”。

显然,这假设您有一个兼容 POSIX 的正则表达式系统,该系统支持字类语法。

当然,这只匹配一个这样的引用。为了两者兼得,并跳过噪音,类似这样的事情应该有效:

(:\w+).+(:\w+)
Run Code Online (Sandbox Code Playgroud)