не удается получить, почему это регулярное выражение (regex101)Повторные захвата группы PCRE
/[\|]?([a-z0-9A-Z]+)(?:[\(]?[,][\)]?)?[\|]?/g
захватывает все входные, в то время как это (regex101)
/[\|]+([a-z0-9A-Z]+)(?:[\(]?[,][\)]?)?[\|]?/g
захватывает только |Func
Введите строку is |Func(param1, param2, param32, param54, param293, par13am, param)|
Также как я могу сопоставить повторяющуюся группу захвата в обычном режиме? Например. я REGEX
/\(\(\s*([a-z\_]+){1}(?:\s+\,\s+(\d+)*)*\s*\)\)/gui
И входная строка ((string , 1 , 2))
.
Regex101 говорит, что «повторная группа захвата будет захватывать только последнюю итерацию. Поместите группу захвата вокруг повторяющейся группы, чтобы захватить все итерации ...». Я попытался следовать этому совету, но мне это не помогло.
См. ['\ | + ([A-z0-9A-Z] +) (?: \ (? (\ W + (?: \ S *, \ s * \ w +) *) \)?) \ |? '] (https://regex101.com/r/ypZGcv/3). Вы не можете захватить все повторные захваты с помощью PCRE, вы можете сопоставить их с использованием регулярного выражения '\ G'. См. ['(?: \ G (?! \ A) \ s *, \ s * | \ | + ([a-z0-9A-Z] +) \() \ K \ w +'] (https://regex101.com/r/ypZGcv/4). –
Не знал, что я не могу захватить все это одним вызовом с помощью PCRE. Теперь я понимаю, поэтому regex101 просил меня захватить повторяющуюся группу, чтобы она соответствовала ей один матч. Большое спасибо за вашу помощь! – user2890234