我有一些问题,如:
"$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")}
答案 0 :(得分:0)
假设您输入的内容如下:
"$Prefex" SELECT column_name(s) FROM table_name WHERE pal pal pal LIMIT "$Suffix"
然后此正则表达式将使用LIMIT之后的任何文本返回您的查询,最多不包括第一个"
:
/(SELECT.*?LIMIT.*?\}).*?/
答案 1 :(得分:0)
理想情况下,我想要一个模式从行的末尾消除到 “LIMIT”的第一场比赛。
搜索
/LIMIT((?!LIMIT).)*$/
并替换为零。