【发布时间】:2018-02-22 05:39:06
【问题描述】:
我有一个 sql 查询作为字符串,我需要一个正则表达式来匹配字符串中的第一个问号 (?)
select * from something where a = ? and b=? and c=?
正则表达式应该只匹配第一次出现的问号。我将在 Neo4j-apoc 库 (apoc.text.replace function) 中使用这个正则表达式。与 Perl/Java 等不同,此库不提供任何标志或 api 来获得第一个匹配项。所以我必须完全依靠正则表达式来匹配第一个字符。
我尝试了以下一些正则表达式,但没有运气
这些正则表达式不匹配
(?<=^[^?]{0,1000})[?]
这些正则表达式匹配所有不存在的字符和所有问号
[?]?
([?])?
([\?])?
([\?])??
([?])*?
这些正则表达式匹配所有问号
([?])+?
[?]+?
有人可以帮我写这个正则表达式吗?
【问题讨论】:
-
总是有3个问号吗?如果没有,将第一个
?捕获为第 1 组的正则表达式是否有效? -
你的意思是this
-
@Bohemian,上面的查询只是一个示例,可以没有问号,也可以有 n 个问号。我只需要匹配第一个。我不能在 neo4j-apoc 库中使用组。我需要一个只匹配第一个的正则表达式?。
标签: regex regex-lookarounds regex-group neo4j-apoc