0

我有一些疑问,例如:

"$Prefex" SELECT column_name(s) FROM table_name WHERE pal pal pal LIMIT "$Suffix"

这些查询具有不需要的前缀和后缀。我使用正则表达式来摆脱使用非贪婪的前缀.*?SELECT

我找不到使用非贪婪修饰符向后搜索来消除后缀的方法。

理想情况下,我想要一个模式来消除从行尾到“LIMIT”的第一个匹配项。如果我使用LIMIT.*?它不会匹配任何东西,而如果我只使用LIMIT.*它是贪婪的,我想避免。

我使用 Ruby 作为我的语言。

这是查询的示例:

SELECT DISTINCT $val1 $val2 WHERE {  $val1 a foaf:val1.$val1 foaf:val2 $val2. FILTER regex($val2 , "CITY LIMITED" , "i")} LIMIT 20&output=xml HTTP/1.1" 200 604 "-" "Python-urllib/2.6" "GB" "65465666654626426246524"

这是所需的输出:

SELECT DISTINCT $val1 $val2 WHERE {  $val1 a foaf:val1.$val1 foaf:val2 $val2. FILTER regex($val2 , "CITY LIMITED" , "i")}
4

2 回答 2

0

理想情况下,我想要一个模式来消除从行尾到“LIMIT”的第一个匹配项。

搜索

/LIMIT((?!LIMIT).)*$/

并一无所有。

于 2014-07-01T11:00:41.657 回答
0

假设您的输入是这样的:

"$Prefex" SELECT column_name(s) FROM table_name WHERE pal pal pal LIMIT "$Suffix"

然后,此正则表达式将返回您的查询,其中包含 LIMIT 之后的任何文本,最多且不包括第一个"

/(SELECT.*?LIMIT.*?\}).*?/
于 2013-05-03T15:20:20.457 回答