我不是真正的RegEx专家,因此提出了一个简单的问题。
我需要使用一些特定模式的参数 例如
$$DATA_START_TIME
$$DATA_END_TIME
$$MIN_POID_ID_DLAY
$$MAX_POID_ID_DLAY
$$MIN_POID_ID_RELTM
$$MAX_POID_ID_RELTM
这些将在运行时以字符串形式替换它们的值(SQL语句)。
例如,我有一个简单的查询
select * from asdf where asdf.starttime = $$DATA_START_TIME and asdf.endtime = $$DATA_END_TIME
现在我尝试使用RegEx模式
\$\$[^\W+]\w+$
我没有得到所有比赛(我只得到了最后一场比赛)。
我正在尝试在https://regex101.com/r/xR9dG0/2
测试我的用法如果有人能纠正我的错误,我会非常感激。
谢谢!
答案 0 :(得分:1)
这将完成这项工作:
\$\$\w+/g
请参阅Demo
只是澄清为什么你的正则表达式正在做的事情:
\$\$[^\W+]\w+$
Unescaped $ char表示字符串的结尾,因此,您的模式匹配必须位于字符串末尾的内容,这就是为什么它只获得最后一个匹配。
这个组[^\W+]
没有意义,以[^ ..]开头的组意味着否定这里的字符,而\ W是字的否定,而组内的+意味着字面上的字符+,所以你说的是匹配所有不是一个字而不是一个+符号的东西,我猜这不是你想要的。
要匹配下一个单词,只需\ w +即可。全局修饰符/g
可确保您不会在第一场比赛中停止。
答案 1 :(得分:0)
这应该有用 - 根据你所说的你想要匹配,这应该有效。如果这是你想要的,它也不会匹配$$ lower_case_strings。如果没有,也添加“i”标志。
\${2}[A-Z_]+/g