我如何使用正则表达式获得这个?

时间:2013-10-15 16:01:18

标签: regex

我使用正则表达式,我无法得到正确的结果。 我需要获得前面带有单词house的数字。 例: 我有:

FLOWERS 527 OFFICE 1217 HOUSE 10
ONE WAY 614 HOUSE 4-C
其他方式371部门209 HOUSE 25 C
SAINT GEORGE 378 DEPARTMENT 808 HOUSE 3 C BLA BLA BLA

我是(?<=\bCASA\s)\d+|\d+-\w\s\b但是我得到了这个号码并且丢失了可能写成如下的字母: HOUSE 10 只是号码 HOUSE 4-C 数字破折号   HOUSE 25 C 号码空格字母 HOUSE 3 C BLA BLA BLA号空间字母blablabla

正则表达式可以使用什么?

3 个答案:

答案 0 :(得分:2)

这将返回HOUSE之后的数字,并且还会捕获下一个字符:

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

在您给出的示例中,它将匹配:

  • 10
  • 4-C
  • 25 C
  • 3 C

答案 1 :(得分:2)

试试这个: (?<=\bHOUSE\s)(?:\d+-\w|\d+\s\w|\d+)\b

NB。条件语句中的顺序很重要,并且第一次成功匹配,所以如果你有\d+|\d+-\w,它只会匹配 4-C 中的 4 但是\d+-\w|\d+将匹配 4-C

http://regex101.com/r/gS0aO6

答案 2 :(得分:0)

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

Live demo