Поиск строк по регулярным выражением

191
06 апреля 2019, 02:50

Необходимо найти такие строки:

/group-avvsgng.php
/group-vvzb_hl.php

Но исключить такие:

/kabel-1-kv_v_group-vvgng_t.php
/kabel-10-kv_v_group-apvbbshv.php

Пробовал так, но исключения тоже находит:

/[^\s].*(?!_)group-[^>]+.php/ig
Answer 1

const str = ` 
/group-avvsgng.php 
/group-vvzb_hl.php 
/kabel-1-kv_v_group-vvgng_t.php 
/kabel-10-kv_v_group-apvbbshv.php 
` 
 
const matchResult = str.match(/\/group-.+\.php/g); 
console.log(matchResult);

Answer 2

Организовать поиск символа /, за которым следует одна и более букв group, за которыми следует обязательная группа символов, состоящих из тире и одной и более букв -vvzb, за которыми следует не обязательная группа символов, состоящих из символа подчёркивания и одной и более букв _hl, за которыми следует точка ., после которой следуют три буквы php:

$str = '/group-avvsgng.php и /group-vvzb_hl.php и /position/kabel-1-kv_v_group-vvgng_t.php и /position/kabel-10-kv_v_group-apvbbshv.php';
$patt = '~/\pL+(?:-\pL+(?:_\pL+)?)+\.\pL{3}~';
preg_match_all($patt, $str, $arr);
var_dump($arr);

Результат:

array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(18) "/group-avvsgng.php"
    [1]=>
    string(18) "/group-vvzb_hl.php"
  }
}

UPD: Если требуется найти соответствия, начинающиеся со слова /group, тогда можно сократить шаблон:

$str = '/group-avvsgng.php и /group-vvzb_hl.php и /position/kabel-1-kv_v_group-vvgng_t.php и /position/kabel-10-kv_v_group-apvbbshv.php';
$patt = '~/group\S+~';
preg_match_all($patt, $str, $arr);
var_dump($arr);
READ ALSO
Выборка и вывод из двух таблиц

Выборка и вывод из двух таблиц

Может кто подскажет как правильно это сделать? Попробовал по принципу zarname_zar и products

175
Перевод текста в двоичный код PHP

Перевод текста в двоичный код PHP

Как можно перевести текст в двоичный код?

175
Как получить данные из формы в ООП php?

Как получить данные из формы в ООП php?

Нужна помощь, как в этом коде сделать реализацию через ООП? Как сделать так чтобы класс получал данные из формы? Вот исходный код

152
Как разбить вывод wp_get_archives ($args) по годам?

Как разбить вывод wp_get_archives ($args) по годам?

Сейчас функция выводит мне весь список месяцов с годами типа: Январь 2016 ит

142