Intereting Posts
PHP против производительности MySQL (если, функции) в запросе session_start () создает новый сеанс при каждой перезагрузке Алгоритм для получения всех возможных комбинаций строк из массива до определенной длины Добавить значения с той же даты Как вы печатаете необработанные символы UTF-8 из их номеров? Как json_decode недействительный JSON с апострофом вместо кавычки Что использовать для XML-анализа / чтения в PHP4 Массив PHP implode для генерации критериев mysql IN Как создать двухсторонние методы кодирования / декодирования с использованием специального ключа – PHP? Laravel Excel: как получить значение ячейки? Правильный способ обновления двунаправленного отношения Many to Many symfony2-doctrine Salesforce / PHP – массовое исходящее сообщение (SOAP), проблема с тайм-аутом – см. Обновление # 2 php, бесконечный цикл в while () loop UID скрипта «/home/…/public_html/index.php» меньше min_uid Динамически настроить PHP для обеспечения безопасности потоков –enable-maintainer-zts или использовать yum для установки pthreads?

Что означает * в регулярном выражении в PHP?

Что подразумевается под [\ s \ S] * в регулярном выражении в PHP? Действительно ли [\S\s]* соответствует каждой строке так же, как .* ?

По умолчанию . не соответствует новым строкам – [\s\S] – это взломать эту проблему.
Это часто встречается в JavaScript, но в PHP вы можете использовать флаг /s для того, чтобы точка совпадала со всеми символами.

. Метасимвол соответствует любому символу, кроме символа новой строки. Таким образом, шаблон .* Который используется для соответствия чему-либо, не будет работать, если вам нужно соответствовать символам новой строки.

 preg_match('/^.*$/',"hello\nworld"); // returns 0 

[\s\S] который является символьным классом символов пробела и символов без пробелов, соответствует любому символу, включая символ новой строки, так что сделайте [\d\D] , [\w\W] . Таким образом, ваш шаблон [\s\S]* теперь соответствует любому.

 preg_match('/^[\s\S]$/s',"hello\nworld"); // returns 1 

Альтернатива сделать . match any (включая новую строку) – использовать s модификатор.

 preg_match('/^.*$/s',"hello\nworld"); // returns 1 

Альтернативный способ использования s модификатора заключается в следующем:

 preg_match('/^(?s).*(?-s)$/',"hello\nworld"); // returns 1 

(?s) включает режим s и (?-s) поворачивается, если выключен. После этого отключилось следующее . не будет соответствовать новой строке.

[\s\S] Набор символов, соответствующий любому символу, включая разрывы строк.

. Соответствует любому символу, кроме разрывов строк.