我正在尝试找到一个可以匹配的php preg_match
test1 test2 [...]但不是test1 test2 [...]
并将test2(...)作为输出返回$ match。
我试过
preg_match('/^[a-zA-Z0-9][\[](.*)[\]]$/i',"test1 test2[...]", $matches);
但它匹配两种情况并返回完整的句子。
任何帮助表示感谢。
答案 0 :(得分:2)
preg_match('/([a-zA-Z0-9]+[\[][^\]]+[\]])$/i',"test1 test2[...]", $matches);
在+
后面注明一个或多个字母数字字符
[a-zA-Z0-9]
整个表达式周围的(
和)
将允许您捕获整个表达式。
由于您的内容在[]
左右,我已将.*
更改为[^\]]
,因为正常表达式为贪婪,如果是test2[.....] test3[sadsdasdasdad]
,它会捕获直到结束,因为有]
。
另外请注意,因为你使用的是$
它最终会匹配的东西,我不确定这是不是你打算做的。
您可以参考this作为参考。