Как использовать регулярное выражение для извлечения бита в середине строки - PullRequest
1 голос
/ 25 сентября 2011

Используя регулярные выражения PHP PCRE, я хочу извлечь центральную часть строки, где части могут встречаться или не встречаться.Т.е.

n bedroom property type in some town

Я хочу извлечь 'тип свойства', используя одно регулярное выражение.Я не знаю всех возможностей для типа собственности, но то, что является последовательным, является начальным битом (это всегда «\ d спальня») и конечным битом (это всегда «в каком-то городе»).Кроме того, начальный или конечный биты (или оба) могут отсутствовать.

Т.е. строки объекта могут быть одним из ...

6 bedroom ground floor flat in Edinburgh

house in Manchester

3 bedroom apartment

Так что нужно извлечь 'первый этажквартира ',' дом 'и' квартира 'соответственно.

Как-то так (что не совсем работает) ....

(\s*\d+\s+bedrooms?\s*)?(.*?)(\s+in)?

Ответы [ 2 ]

4 голосов
/ 25 сентября 2011

Добавьте якоря к своему регулярному выражению и объявите, что первая и последняя группа муравьев не захвачена:

/^(?:\s*\d+\s+bedrooms?\s*)?(.*?)(?:\s+in\s.*)?$/
1 голос
/ 25 сентября 2011

Это #(((?<bedroomCount>\d+)\s+bedroom)\s+)?(?<type>.+?)\s(in\s+(?<city>\w+))?\n#i работает, я думаю, но вам нужен дополнительный перевод строки в конце строки тестирования.

Пример здесь

...