我正在尝试在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();
//
我需要输入所有参数:“param1::int
”和“docType::text
”
我试过自己做但没有成功:(
http://regexr.com?31nok
答案 0 :(得分:1)
:(\w+::\w+)
答案 1 :(得分:1)
和(:[a-zA-Z0-9]+::[a-zA-Z0-9]+)
答案 2 :(得分:1)
a-Z之间可能有奇怪的东西,所以只需使用不区分大小写的[a-z]或[a-zA-Z]。我想你可能想要一个全局匹配(找到所有结果)。多行是另一回事,它使.
匹配\n
,这对我无法帮助。试试这个:http://regexr.com?31not
答案 3 :(得分:1)
我不知道postgreSQL,但我认为我得到了你的问题的主旨。
这是正确的:http://refiddle.com/2tc?
答案 4 :(得分:0)
当我尝试:([^: ]+::[^: ]+)
和(:[^: ]+::[^: ]+)
时,我看到没有区别 - 在两种情况下冒号都匹配。
然而我发现了一些其他方式
(?!:)([a-z0-9_-]+::[a-z0-9_-]+)
完美无缺。
第一部分(?<=:)
确定“在主表达式之前匹配一个组而不将其包含在结果中。”
谢谢大家的回答;)