我写了这个正则表达式: '/\[\.{2}([^\.].+)\]/'
它应该匹配这样的模式: [..Class,Method,Parameter]
它可以工作,直到我有这样的模式: [..Class1,Method1,Para1][..Class2,Method2,Para2]
我试图通过?
在+
. '/\[\.{2}([^\.].+?)\]/'
但它没有帮助。有什么建议么?
我相信你想使用[^\.]+
而不是[\.].+
. 请注意,这.+
是一个贪婪量化的点模式,匹配除换行符以外的任何1 个或多个字符,因此匹配]
和[
。
匹配除]
with[^]]
而不是 using之外的任何 1 个或多个字符[^\.]
:
\[\.{2}([^]]+)]
细节
\[
- 一个[
字符\.{2}
- 两个点字符([^]]+)
- 第 1 组:一个或多个字符]
(]
当它是字符类中的第一个字符时无需转义)]
- 一个右括号(]
当它在字符类之外时不需要转义)。$str = '[..Class,Method,Parameter] [..Class1,Method1,Para1][..Class2,Method2,Para2]';
preg_match_all('/\[\.{2}([^\.].+?)\]/', $str, $matches);
print_r($matches[0]);
结果:
Array
(
[0] => [..Class,Method,Parameter]
[1] => [..Class1,Method1,Para1]
[2] => [..Class2,Method2,Para2]
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句