2016-03-18 3 views
1

Как мог я упростить мой регулярное выражение, чтобы получить URL, который содержит:Как упростить свою регулярное выражение

de-[.+] 
em-[.+] 
empresa-[.+] 
area-[.+] 

в любой заказ, например

/home/de-xpto/area-xpto/empresa-xpto 

или

/home/area-xpto/empresa-xpto/de-xpto 

или

/home/empresa-xpto/em-xpto/de-xpto 

и т.д ...

И регулярное выражение также, что я могу определить, если не имеют какой-либо один из списка.

\/home\/([de|area|em|empresa]*-([^\/]+))\/([de|area|em|empresa]*-([^\/]+))\/([de|area|em|empresa]*-([^\/]+))\/([de|area|em|empresa]*-([^\/]+))\/([de|area|em|empresa]*-([^\/]+))\/([de|area|em|empresa]*-([^\/]+)) 

Благодаря

+1

Возможно ['^ \/home (?: \/(?: De | em (?: Presa)? | Область) - [^ \ /] +) +'] (https://regex101.com/ г/mX3oT6/2)? –

ответ

1

Ваше регулярное выражение содержит классы символов с | символом чередованием, что неправильно. Вы должны использовать группирующие конструкции(...) для соответствия альтернативным последовательностям символов.

При этом, вы, скорее всего, нужно

\/home(?:\/(?:de|em(?:presa)?|area)-[^\/]+)+ 

Вот regex demo.

  • \/home - соответствует /home
  • (?:\/(?:de|em(?:presa)?|area)-[^\/]+)+ - соответствует 1 или более последовательностей:
    • \/ - это / символ
    • (?:de|em(?:presa)?|area) - либо de или em или empresa или area
    • - - буква -
    • [^\/]+ - 1+ символы, отличные от /

Если вам нужно, чтобы соответствовать этим URL-адреса в качестве полноценных строк, добавьте ^ (в начале) и $ (в конце) якорей.

+0

Wiktor, спасибо. Мог бы сказать мне, как я делаю это же регулярное выражение, но теперь, thats не содержит список? я попытался поместить^но не работает. –

+0

Что вы имеете ввиду, нет списка? Нет такого понятия, как список в регулярном выражении. В круглых скобках есть группа альтернатив. Разве это не то, о чем вы просили? –

+0

например: регулярное выражение соответствует этому:/home/de-xpto/em-xpto. теперь я хочу, чтобы он соответствовал, если есть тот, который не содержит в списке [de | em | empresa | etc] ... example:/home/de-xpto/xpto/area-xpto –

Смежные вопросы