поглотить текст с двойной кавычкой - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть следующий текст:

Budget Cube Options: Read Only, Read/Write, Admin

Я хотел бы преобразовать его в:

'Budget Cube Options'= @('Read Only','Read/Write', 'Admin')

1 Ответ

0 голосов
/ 19 декабря 2018

В PHP вы можете достичь желаемого с помощью этого регулярного выражения:

(?:^([^:]*)|\K)[:,]\s+([^,]+)
  • (?:^([^:]*)|\K) ищет начало строки, за которым следует некоторое количество не : символов, или конец предыдущего совпадения (\K)
  • [:,]\s+ ищет : между первым текстом или запятые между последующими значениями, после которых следует пробел
  • ([^,]+) ищет некоторое количество не запятых символов.Это будет совпадать до запятой или конца строки

Регулярное выражение захватывает текст до : в группе 1 и значения после : в группе 2. Вы можете использовать егокак это:

$string = 'Budget Cube Options: Read Only, Read/Write, Admin';
preg_match_all('/(?:^([^:]*+)|\K)[:,]\s+([^,]+)/', $string, $matches);
echo "'{$matches[1][0]}'= @('" . implode("','", $matches[2]) . "')";

Выход:

'Budget Cube Options'= @('Read Only','Read/Write','Admin')

Демонстрация на 3v4l.org

Regex Демонстрация на regex101

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...