正则表达式的新手,无法获得正确的匹配。
我有以下字符串:
股东周年大会将于2016年1月13日上午10点在本公司位于汉普郡贝辛斯托克Telford路的Unity House,RG21 6YJ的注册办公室举行。
公司宣布其2016年度股东大会将于2016年2月11日上午10点在伦敦卢顿机场,卢顿,贝德福德郡,LU2 9PF举行。
我正在尝试从最后一次'at'中提取地址,直到邮政编码。所以Unity House,Telford Road,Basingstoke,Hampshire,RG21 6YJ和Hangar 89,London Luton Airport,Luton,Bedfordshire,LU2 9PF
这就是我使用的(at)(?!.*at)(.*)\s([A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2})
它只提取第二个地址。有什么想法吗?
由于
答案 0 :(得分:2)
您希望使用((?:(?!at).)*)
而不是(?!.*at)(.*)
来避免跳过at
(at)((?:(?!at).)*)\s([A-Z]{1,2}[0-9][A-Z0-9]? [0-9][ABD-HJLNP-UW-Z]{2})
如果您使用带有s标志的(at)(?!.*at)(.*)
,则只有前一个at
而不是另一个at
。所以预计只有最后一个匹配。 (at)((?:(?!at).)*)
不会跳过另一个at
。