2013-10-15 2 views
0

im работает с регулярным выражением, и я не могу получить правильный результат. Мне нужно получить число, которому предшествует слово house. Пример: у меня есть:Как я могу получить это, используя регулярные выражения?

ЦВЕТЫ 527 OFFICE 1217 HOUSE
ONE WAY 614 дом 4-С
НАОБОРОТ 371 ОТДЕЛ 209 ДОМ 25 °
Saint George 378 ОТДЕЛ 808 ДОМ 3 C BLA BLA BLA

Я ISE (?<=\bCASA\s)\d+|\d+-\w\s\b, но я получаю, чтобы получить только число и потерять письмо, которое может быть записано следующим образом: HOUSE только номер HOUSE 4-C номер тире письмо HOUSE 25 C номер пространство письмо HOUSE 3 C BLA BLA BLA номер пространства письмо блаблабла

Какое регулярное выражение может использовать?

+0

'ДОМ 3 C BLA BLA BLA' .. как вы знаете, бла-бла не является частью номера дома? – vidit

+2

'ДОМ ([0-9] +)' получает номер в первой группе захвата – NWard

ответ

0
(?i)house\s+(\d+[-\s]?[a-zA-Z]?)\b 

Live demo

+0

Это может помочь объяснить, почему это работает, а не просто давать его и утверждать, что это так. – qaphla

+0

@ qaphla OP не нуждается в пояснении. По его словам, ему нужно регулярное выражение в предыдущем. – revo

+0

Thans !! работа прекрасна! – Patricio

2

Это возвращает число после HOUSE и поймает также следующий символ:

/HOUSE (\d+[\s\-]?[A-Z]?)\b/ 

В примерах вы дали, это будет соответствовать:

  • 4-C
  • 25 C
  • 3 C
+0

Отлично! но не работает – Patricio

+0

Странно, потому что я тестировал с помощью Perl, и он работает правильно. – psxls

+0

Друг, если мне нужно извлечь все, кроме ДОМА 4-С?Пример: У меня есть адрес «SAINT GEORGE 378 DEPARTMENT 808 HOUSE 3 C BLA BLA BLA», я бы хотел извлечь «SAINT GEORGE 378 DEPARTMENT 808 C BLA BLA BLA» без «ДОМА 3» ?? – Patricio

2

Попробуйте это: (?<=\bHOUSE\s)(?:\d+-\w|\d+\s\w|\d+)\b

NB. приказ об условном операторе является важным, и первым успешным матч принимается, поэтому если у вас есть \d+|\d+-\w он будет соответствовать только в 4-C но \d+-\w|\d+ будет соответствовать 4-C

http://regex101.com/r/gS0aO6

+0

Это именно то, что мне нужно. Танки вы очень! Это решение пытается только то, что мне нужно. – Patricio

+0

Друг, если мне нужно извлечь все, кроме ДОМА 4-С? Пример: У меня есть адрес «SAINT GEORGE 378 DEPARTMENT 808 HOUSE 3 C BLA BLA BLA», я бы хотел извлечь «SAINT GEORGE 378 DEPARTMENT 808 C BLA BLA BLA» без «ДОМА 3» ?? – Patricio

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