如何跳过正则表达式中的模式之间的字符串?

时间:2014-02-10 15:17:45

标签: regex preg-replace preg-match

我的字符串是

$str='insert into employees values('

我想忽略插入之间的所有内容。我想跳过员工价值我应该如何在正则表达式中跳过它?< / p>

输入字符串:

insert into employees values( nextval( 'public.scheduled_charges_id_seq' ),'shrenik', 555, NULL)

必需的输出:

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

我试过了:

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

我想替换字符串中的机密值以插入到模式中的机密值应该限制在从插入到员工(到它结束的位置)的大括号中。 你可以帮我吗? 提前致谢

1 个答案:

答案 0 :(得分: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);