Мне интересно, возможно ли в PHP установить модификатор regexp только для части выражения (не для всего выражения).PHP regexp: недействительный модификатор для части выражения
У меня есть следующий код:
$romanDigitsRegexp="(M{1,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})|M{0,4}(CM|C?D|D?C{1,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})|M{0,4}(CM|CD|D?C{0,3})(XC|X?L|L?X{1,3})(IX|IV|V?I{0,3})|M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|I?V|V?I{1,3}))";
$test = "Properties of Wide Bandgap li-vi Semiconductors VolUme1";
$volumeInfoFound = preg_match("/(\bv|Volume|\bvol)[\.| ]*(\d+|".$romanDigitsRegexp.")\b/i",$test, $matches);
Эти глобальные/я модификатор вызывает проблемы с римскими цифрами. Я хотел бы удалить его, но в то же время поймать такие слова, как «объем», «VOLUME», «vol», «VOL», «Vol». Можно ли добавить \ я модификатор только для этой части:
(\bv|Volume|\bvol)
Спасибо, это работает. – Tamara