如何在PHP中搜索匹配的模式?

时间:2016-01-14 23:05:16

标签: php regex

我正在尝试在字符串中搜索格式为

的模式
{{ Control :: 123 }}
or
{{Control::123}}
or
{{ Control ::123 }}
or
{{Control :: 123}}

基本上空间可以在任何地方,但它必须以双开大括号开头,然后是单词“Control”,后跟::后跟一个以双结束大括号结尾的数字。

这就是我所做的

$pattern = '/{{ ?% ?Control ?:: ?([1-9]+([0-9]{1,2})?) ?% ?}}/i';
$subject = 'This is my subject for "{{ Control:: 132}}" ';

$matches = [];
preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);

print_r($matches);

我需要能够返回找到的模式,即{{ Control:: 132}}。然后我需要能够找到号码132

我在这里做错了什么不能起作用?

1 个答案:

答案 0 :(得分:2)

你的正则表达式不起作用,因为你没有逃脱" {"和"}"。另外你可以更简单地写它 试试这个:

resolveOne

请注意,它可能会被增强,以便在任何地方接受超过1个空格:

$pattern = '/\{\{\s?Control\s?::\s?(\d+)\s?\}\}/i';