$status['Совершенно_новое'] = 'Brand_new<br>New'
((?<=\$status\[')([а-яА-ЯёЁa-zA-Z]+?.*')([A-za-z]+?.*)(?=')
$str = "$status['Совершенно_новое'] = 'Brand_new<br>New'";
$pattern = "(?<=\$status\[')([а-яА-ЯёЁa-zA-Z]+?.*')([A-za-z]+?.*)(?=')";
preg_match($patern, $str, $matches);
var_dump($matches);
// полный match и группы
\$status\['([^']+)'\][^']*'([^']*)'
как выделить нужную группу в данном случае группу 2что значит "выделить"? PHP ничего не выделяет, у него графики вобще нет.
$matches[2]
, это же очевидно, если прочесть документацию по ссылке, которую я скинул, или воспроизвести код, который я приложил. $status['Совершенно_новое'] = 'Brand_new<br>New'
Просто я не знаю как это написать возможно не группами но мне нужно выделить именно текст после открытия 2 группы кавычек исключая первую но участвующую в поиске как направляющую. Документацию читаю но понять не могу как это написать. :( Совершенно_новое'] = 'Brand_new<br>New'
\K
стирает то, что не в группе, но результат все-еще будет на той же позиции (в $matches[1]
, например), а "full match" будет пустой строкой. Как я понял, автор пользуется не языком PHP, а каким-то функционалом в редакторе. Все-же не ясно что не так с вариантом без \K
, т.к. в редакторах так же есть доступ к группам, если есть функционал регулярок. Только не понятно как именно автор этим пользуется, ответ получился какой-то магией, т.к. что все-таки подразумевается в вопросе - не понятно. добавление \K стирает то, что не в группе,
(?:'...|"...)
\$status\['[^']+'\][^'"]*(?:'\K(?:[^']|'')+|"\K[^"]+)
(?:'...|"...)
тыркаюсь, но у меня лишнее захватывает, то есть то что слева до знака равно тоже. [''8'']
и 'Brand_new<<' New'>>New'