1

我正在尝试在 javascript 中编写一个正则表达式来捕获 PostgreSQL 字符串中的所有命名参数以将它们放入表中

假设我们有

var query="SELECT table.data FROM table JOIN table2 ON table2.id=table.id_tab2 WHERE table2.field <> :parm1::int GROUP BY table.data HAVING table.data position(:docType::text in document_type) <> 0

var tab=new Array();

//

我需要 rs 将所有参数放入选项卡:“ param1::int”和“ docType::text”我自己尝试过但没有成功 :( http://regexr.com?31nok

4

5 回答 5

1

像这样的东西? :(\w+::\w+)

于 2012-08-03T12:13:37.250 回答
1

(:[a-zA-Z0-9]+::[a-zA-Z0-9]+)

于 2012-08-03T12:15:10.920 回答
1

aZ 之间可能有奇怪的东西,所以只需使用不区分大小写的 [az] 或 [a-zA-Z]。我想你可能想要一个全局匹配(查找所有结果)。多行是另一回事,它使.匹配\n对您没有帮助,我可以看到。试试这个: http ://regexr.com?31not

于 2012-08-03T12:15:23.850 回答
1

我不知道postgreSQL,但我想我明白了你问题的要点。

这是正确的:http ://refiddle.com/2tc吗?

于 2012-08-03T12:17:15.523 回答
0

当我尝试:([^: ]+::[^: ]+)(:[^: ]+::[^: ]+)没有发现任何差异时 - 两个 casec 中的冒号都匹配。

但是我找到了其他方法

(?!:)([a-z0-9_-]+::[a-z0-9_-]+)

完美运行。第一部分(?<=:)确定“在您的主要表达式之前匹配一个组,而不将其包含在结果中。”

谢谢大家的回答;)

于 2012-08-03T13:00:44.793 回答