Intereting Posts
GET весь div с его элементами и отправить его с помощью функции php mail У меня возникают проблемы с Array для структуры JSON в PHP, которые будут использоваться в Javascript BigQuery PHP Вызов неопределенного метода Google_Client :: setAssertionCredentials () Уровень доступа к определенному классу должен быть общедоступной ошибкой в ​​PHP Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: notify () База данных коммутатора CakePHP (используя тот же источник данных) на лету? PHP: лучший способ конвертировать дату и время в строку времени? Преобразование ASCII и UTF-8 в неспециальные символы с одной функцией Как округлить / потолковать / поместить номер bcmath в PHP? Как я могу получить общее значение из того же массива Как создать список с запятыми из массива в PHP? Импорт котировок в vtiger crm с веб-сервисами PHP ищет несколько строк в базе данных Являются ли ресурсы ресурсов ICU для ресурсов перевода сообщений PHP: простой HTML DOM Parser – несколько атрибутов в find ()?

Бесконечное соответствие подвыражений (регулярных выражений) возвращает только одно совпадение

У меня есть регулярное выражение, подобное этому (очень упрощенное):

^(ab)*$ 

И я согласен с этим:

 abababababababab 

Когда я запускаю его через preg_match :

 preg_match('/$(ab)*$/', 'abababababababab', $matches); print_r($matches); 

Я получаю это:

 Array ( [0] => abababababababab [1] => ab ) 

Я ожидаю этого:

 Array ( [0] => abababababababab [1] => ab [2] => ab [3] => ab [4] => ab [5] => ab [6] => ab [7] => ab [8] => ab } 

Как я могу получить то, что ожидаю?

(Обратите внимание, что подвыражение может быть более сложным, например ([aA][bB]) , и я хочу, чтобы совпадающие выражения находились в их порядке в теме.)

Сделайте это, используя preg_match_all следующим образом:

 preg_match_all('/(ab)/', 'abababababababab', $matches); print_r($matches); 

Помните, что preg_match предоставляет только первое совпадение и что preg_match_all имеет ту же функциональность, но возвращает все. Также обратите внимание, что теперь регулярное выражение изменилось. Если вы используете звездочку, она, вероятно, будет потреблять всю строку в первом совпадении. Вы могли бы, однако, попробовать что-то вроде (ab)*? чтобы сделать его неразборчивым.