我在regex
很可怕,所以请原谅这个问题的基本原理。我目前有以下regex
,它将在字符串末尾标识英国邮政编码:
([a-zA-Z]{1,2}([0-9]{1,2}|[0-9][a-zA-Z])\s*[0-9][a-zA-Z]{2}$)
这很好用。但是我现在正试图做相反的事情,因为我想要一个regex
来识别字符串中的所有其他东西,但不是它后面的邮政编码。我已经修改了正则表达式:
((.+)[a-zA-Z]{1,2}([0-9]{1,2}|[0-9][a-zA-Z])\s*[0-9][a-zA-Z]{2}$)
这成功地将其分解为捕获组,将字符串减去邮政编码(使用正则表达式测试器)识别为捕获组1.但是,我不知道如何让它仅选择捕获组1?
答案 0 :(得分:0)
您可以使用正向前瞻(?=)
来选择不带邮政编码的字符串
应用于regex
这将导致以下结果:
((.+)(?=[a-zA-Z]{1,2}([0-9]{1,2}|[0-9][a-zA-Z])\s*[0-9][a-zA-Z]{2}$))
正向前瞻会找到一个表达式,其中包含另一个表达式,因此A(?=B)
将找到表达式A
,其后跟表达式B