2
說我兩個字符串,如何匹配可以在字符串中的任何位置但不在兩個字之間的模式?
$string1 = "select * from auditor where name in (select 'Jack' name from employee where id = 1)";
$string2 = "select * from employee where name = 'Jack'";
現在,我需要一個正則表達式只有在找到任何封閉的單引號內的WHERE子句。即在$ string1中它不應該匹配,因爲在select子句中使用單引號並且$ string2應該與在where子句中使用的匹配。
我試圖
(?!select .*\'(.*)\' where)where (.*\'(.*)\')
如果您接受重新構造這個問題,它可以「在anystring ='pattern」之後匹配單引號內的任何字符串。這解決了你的具體問題,但並沒有真正回答這個問題:'(?<= where)[\ w \ s] * = \ s *'(\ w *)'' – mquantin