我使用的是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
答案 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]+/'
你也应该逃避'.
',因为如果没有转义,这些将被解释为任何角色,而不是句号。