我写了这个RegEx:p1, c1, c2
p2, null, null
它应该匹配这样的模式:'/\[\.{2}([^\.].+)\]/'
直到我有这样的模式:[..Class,Method,Parameter]
我试图通过[..Class1,Method1,Para1][..Class2,Method2,Para2]
?
来使RegEx变得懒惰。 +
但它没有帮助。有什么建议吗?
答案 0 :(得分:2)
我相信你想使用[^\.]+
而不是[\.].+
。请注意,.+
是一个贪婪量化的点模式,并匹配任何除换行符之外的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]
)