Как с помощью функции preg_match можно найти адреса, в которых отсутствует определенная часть?

Как можно найти URL-адреса, в которых отсутствует строка "test?green" из данного списка?
  • 26 декабря 2023 г. 9:37
Ответы на вопрос 2
Для поиска адресов, в которых отсутствует определенная часть, можно использовать отрицательную внутрипаттерновую синтаксическую конструкцию (negative lookahead) в регулярном выражении.

Например, для нахождения URL-адресов, в которых отсутствует строка "test?green" из данного списка, можно использовать следующий код:

```php
$urls = [
    'https://example.com/test?red',
    'https://example.com/test?green',
    'https://example.com/test?blue',
    'https://example.com/yellow',
];

$pattern = '/^(?!.*test\?green).*/';

foreach ($urls as $url) {
    if (preg_match($pattern, $url)) {
        echo $url . "\n";
    }
}
```

В данном примере используется отрицательная проверка внутрипаттерновая синтаксическая конструкция `(?!.*test\?green)`, которая проверяет, что в строке не содержится последовательность "test?green". Если это условие истинно, то URL-адрес выводится на экран.
!preg_match('#\?green#isU', $text, $out);
echo '<pre>' . print_r($out, true);
Похожие вопросы