2013-10-15 57 views
0

即時通訊工作與正則表達式,我不能得到正確的結果。 我需要獲取前面加上word house的數字。 實施例: 我有:我如何使用正則表達式來獲得這個?

FLOWERS 527 OFFICE 1217 HOUSE
單程614 HOUSE 4-C
OTHER WAY 371 DEPARTMENT 209 HOUSE 25℃
SAINT GEORGE 378 DEPARTMENT 808 HOUSE 3 C BLA BLA BLA

我ISE (?<=\bCASA\s)\d+|\d+-\w\s\b不過我可以去獲得公正的數量和失去它可以寫成如下的一封信: HOUSE只是數量 HOUSE 4-C數劃線字母 HOUSE 25 ç號空間信 HOUSE 圖3C唧唧歪歪號空間信blablabla

什麼正則表達式可以使用?

+0

'HOUSE的3C BLA BLA BLA' ..你怎麼知道喇嘛喇嘛不是門牌號碼的一部分? – vidit

+2

'HOUSE([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

我的朋友,如果我需要提取除HOUSE 4-C以外的所有東西?例如:我的地址是「SAINT GEORGE 378 DEPARTMENT 808 HOUSE 3 C BLA BLA BLA」,我想提取「SAINT GEORGE 378 DEPARTMENT 808 C BLA BLA BLA」,但沒有「HOUSE 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

我的朋友,如果我需要提取除HOUSE 4-C以外的所有內容?例如:我的地址是「SAINT GEORGE 378 DEPARTMENT 808 HOUSE 3 C BLA BLA BLA」,我想提取「SAINT GEORGE 378 DEPARTMENT 808 C BLA BLA BLA」,但沒有「HOUSE 3」? – Patricio