Preg_match для альтернативных значений в регулярном выражении php - PullRequest
0 голосов
/ 28 января 2019

Я хочу сопоставить одну из двух возможностей в регулярном выражении.

$regex = "/^(& (sot-(<pagination>[0-9]+)) | (dorer-(<pagination>[0-9]+)) )? &?$/";
preg_match($regex, "&sot-6", $matches);

Это регулярное выражение должно соответствовать таким значениям, как:

&sot-4
&dorer-56&
&sot-281&
&dorer-0

Что означает "&" ("sot-"или" dorer - ") (число) (необязательно" & ")

Но (текст) - (число) не является единственным форматом.Вот почему мне нужен расширенный формат регулярных выражений.

Но это совсем не совпадает.Что мне делать?

1 Ответ

0 голосов
/ 28 января 2019

Вы можете использовать это короткое регулярное выражение, которое работает со всеми вашими тестами:

^&[^-]+-(?<pagination>\d+)&?$

RegEx Demo

Возможно, вы захотите добавить больше деталей в вопросесли это не соответствует вашим требованиям.

Подробности RegEx:

  • ^&: совпадение & в начале строки
  • [^-]+;Соответствие 1+ не дефисным символам
  • -: сопоставление дефиса
  • (?<pagination>\d+): сопоставление 1+ цифр и захват их в группе с именем pagination
  • &?$: совпадение необязательно & до конца
...