使用正则表达式将通配符值替换为变量

时间:2013-04-02 16:30:46

标签: php regex

我使用的是php,需要找到下面定义的通配符字符串。然后我需要在通配符值的末尾附加一个字符串。

值为“awn.Funnel.Widget.createForm(”awn.co.uk“,” - wildcard - here - “)

这是我尝试过的:

if (preg_match('/awn.Funnel.Widget.createForm("awn.co.uk",[_a-zA-Z]+/', $competition_code, $matches)) { print_r ($matches); }

但它给了我:

Warning: preg_match(): Compilation failed: missing ) at offset 52

2 个答案:

答案 0 :(得分:2)

你的正则表达式:

'/awn.Funnel.Widget.createForm("awn.co.uk",[_a-zA-Z]+/'

应改写为:

'/awn\.Funnel\.Widget\.createForm\("awn\.co\.uk",[_a-zA-Z]+/'

或者更好地使用 preg_quote function

$regex = '/' . preg_quote('awn.Funnel.Widget.createForm("awn.co.uk', '/') 
         . '[_a-zA-Z]+/';

答案 1 :(得分:1)

preg_match的第一个参数:

'/awn.Funnel.Widget.createForm("awn.co.uk",[_a-zA-Z]+/'

是一种正则表达式模式。因此,字符“(”被解释为捕获组的开始。由于这不是你想要的,你需要逃避paren:

'/awn.Funnel.Widget.createForm\("awn.co.uk",[_a-zA-Z]+/'

你也应该逃避'.',因为如果没有转义,这些将被解释为任何角色,而不是句号。