Необходимо найти такие строки:
/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
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);
Организовать поиск символа /, за которым следует одна и более букв 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);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей