2014-02-10 111 views
0

我的字符串是如何跳過正則表達式中的patten字符串?

$str='insert into employees values(' 

我想插入之間的一切忽略到我想跳過員工價值觀我應該怎麼跳過它在正則表達式

輸入字符串。?要求輸出:

insert into employees values(nextval('public.scheduled_charges_id_seq'),'XXX', XXX, NULL); 

我想:

([0-9]|\'.*\') 

我想在哪家開始作爲INSERT INTO模式應僅限於從插入到大括號員工字符串替換機密值(以它的盡頭。 你能幫我嗎? 在此先感謝

+0

什麼這是你的目標是什麼? – tenub

+0

你的圖案看起來如何? –

+0

請舉例說明你正在綁定什麼來匹配以及替換後所需結果的示例。 – MElliott

回答

0

如何:

正則表達式:

\),\s?'([^']+)',\s?([0-9]+) 

工作正則表達式的例子:

http://regex101.com/r/kR9gY4

PHP:

$str = "insert into employees values(nextval('public.scheduled_charges_id_seq'),'XXX', 555, NULL);"; 

preg_match("/\),\s?'([^']+)',\s?([0-9]+)/", $str, $matches); 

echo $matches[1] . ", " . $matches[2]; 

輸出:

XXX, 555 

或者,如果你要取代這些值,你可以這樣做:

正則表達式:

(?<=,)\s?[^,]+,\s?[^,]+(?=,) 

工作正則表達式的例子:

http://regex101.com/r/cJ4pM1

PHP:

$str = "insert into employees values(nextval('public.scheduled_charges_id_seq'),'XXX', 555, NULL);"; 

echo preg_replace("/(?<=,)\s?[^,]+,\s?[^,]+(?=,)/", "'YYY', 999", $str); 

輸出:

insert into employees values(nextval('public.scheduled_charges_id_seq'),'YYY', 999, NULL); 
+0

您好MElliott它應該首先找到插入到給定的字符串和任何數值或值在''直到關閉大括號插入) – Shrenik