2015-03-16 3 views
2

Я пытаюсь прочитать имя сервера из файла конфигурации nginx.
Поэтому мне нужно регулярное выражение в строку:
server_name this.com www.this.com someother-example.com;Рекурсивный подшаблон regex

Я использую preg_match_all PHP и я пробовал разные вещи до сих пор:
/^(?:server_name[\s]*)(?:(.*)(?:\s*))*;$/m: Что не дает мне ничего
/^(?:server_name[\s]*)((?:(?:.*)(?:\s*))*);$/m Что дает мне это. com www.this.com someother-example.com

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

[ 
    0 => 'this.com', 
    1 => 'www.this.com', 
    2 => 'someother-example.com' 
] 

Возможно, один из вас знает?

Спасибо!

+2

[Боб ваш дядя:] (https://regex101.com/r/sB0eG6/1) '(?: Server_name | \ G (?! <^)) \ S * \ K [^; \ s] + '. TLDR: это не имеет никакого отношения к «рекурсивным шаблонам». – HamZa

+0

Если они разделены знаком пространства, почему бы вам просто не взорваться космическим знаком? – MilanG

+1

Спасибо! Без «<» он делает то, что я хочу! – user3776824

ответ

2

, как Боба твой дядя написал:

(?:server_name|\G(?!^))\s*\K[^;|\s]+

ли трюк!

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