首页 > 解决方案 > 查找文本中的第一组 5 位数字

问题描述

我需要在这样的文本中找到第一组 5 个数字:

;SUPER U CHARLY SUR MARNE;;;rte de Pavant CHARLY SUR MARNE Picardie 02310;Charly-sur-Marne;;;02310;;;;;;;;;;;;;;

我只需要找到第一个02310

我的正则表达式,但它找到了所有 5 个数字:

([^\d]|^)\d{5}([^\d]|$)

标签: regexnotepad++

解决方案


要匹配您可以使用的前 5 位数字

^.*?\K(?<!\d)\d{5}(?!\d)

请参阅正则表达式演示。当您要删除匹配项时,只需将替换为字段保留为空白即可。匹配行的^开头,.*?匹配除换行符之外的任何 0+ 字符,尽可能少,并且\K运算符删除到目前为止匹配的文本。然后,(?<!\d)\d{5}(?!\d)匹配未包含在其他数字中的 5 个数字。

另一个变体包括捕获组/反向引用:

查找内容:      ^(.*?)(?<!\d)\d{5}(?!\d)
替换为$1

请参阅此正则表达式演示

在这里,不是在数字之前删除找到的文本,而是将其(.*?)捕获到组 1 中并$1在替换模式中将其放回。


推荐阅读