Я написал это RegEx: '/\[\.{2}([^\.].+)\]/'
И это должно соответствовать шаблонам, как это: [..Class,Method,Parameter]
Это работает, пока у меня нет шаблона, подобного этому: [..Class1,Method1,Para1][..Class2,Method2,Para2]
Я пытался сделать RegEx ленивым, поставив ?
вот +
, '/\[\.{2}([^\.].+?)\]/'
но это не помогло Какие-либо предложения?
Я считаю, что вы хотели использовать [^\.]+
скорее, чем [\.].+
, Обратите внимание, что .+
является жадно определенным точечным рисунком и соответствует любой 1 или более символов, отличных от символов разрыва строки, и, таким образом, совпадают по обоим ]
а также [
,
Подберите любой 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]
)
Других решений пока нет …