正则表达式A-Z但随后排除字符串

时间:2014-02-20 22:18:47

标签: regex

真的很困惑,得到了一堆我需要处理的地址,我有一个地址行然后是一个邮政编码

数据格式为:

ASHLEY CLOSE, HAVEN, BH1

我需要能够获得ASHLEY CLOSE, HAVEN然后BH1

我认为它会是这样的:

/^([A-Z ,]+)(?!, BH)/

2 个答案:

答案 0 :(得分:2)

这是非常基本示例:

/(.+,) (BH.+)/gm

# match anything with one or more characters until a comma
# capture any number of these groups until you meet your BH block
# capture BH and the following character

演示:http://regex101.com/r/xC0jB0

  

修改

A better way不是专门针对“BH ......”而是要匹配字符串末尾的组:

/^(.+,) (.+)$/gm

答案 1 :(得分:1)

关于红宝石:

"ASHLEY CLOSE, HAVEN, BH1" =~ /^([A-| ,]+), ([A-Z0-9]+)/
 => 0 
> puts $1
ASHLEY CLOSE, HAVEN
 => nil 
> puts $2
BH1

我认为你不需要高级正则表达式。