我有一个包含案例ID的字符串。
示例字符串:
[Case 123]
lorem[Case 123]ipsum
[Case 123]ipsum
我想从字符串中获取id(123
)。
我尝试过(在字符串[Case 1359] needsmoreinfo
上):
$pattern = '/[Case (\d+)]/';
preg_match($pattern, $message->subject, $matches, PREG_OFFSET_CAPTURE);
导致:
o[0][0]: C
[1]: 1
不是我真正想要的东西:)
模式应该是什么样的,或者某处有另一个缺陷?
答案 0 :(得分:4)
[
和]
是正则表达式中具有特殊含义的字符。您需要转义它们以告诉正则表达式引擎搜索文字[
和]
字符:
$pattern = '/\[Case (\d+)\]/';
preg_match($pattern, $message->subject, $matches, PREG_OFFSET_CAPTURE);
详细了解这些字符在未转义时的作用:正则表达式character classes。
答案 1 :(得分:1)
你只需要逃开开方括号:
$pattern = '/\[Case (\d+)]/';
它被解释为正则表达式元字符,它引入了一个字符类。
答案 2 :(得分:1)
您需要转义括号。我的意思是做\[
和\]
。
你应该:
$pattern = '/\[Case (\d+)\]/';