首页 > 解决方案 > 正则表达式匹配多个条目

问题描述

我正在尝试从法国提取位置。这是一个示例:

1#Tunisia#TS#TS#34#9#TS;4#Virsac, Aquitaine, France#FR#FR97#45.0333#-0.45#-1477568;4#Gironde, Aquitaine, France#FR#FR97#44.584#-0.089244#-1429418

它基本上是一个城市、它的地区和它的国家。因此,我这样做了:

^[2-5]#(.*?)#FR#

结果是:

Gironde, Aquitaine, France

这会正确提取城市/地区/国家,但只会提取其中一个。是否可以提取多个条目?预期的结果是:

Virsac, Aquitaine, France
Gironde, Aquitaine, France

提前致谢,

标签: regex

解决方案


在当前模式的基础上,您需要将^锚替换为单词边界构造(以确保2345匹配为独立数字)并替换.*?[^#]*以禁止匹配最右边的尾随分隔符模式。

也就是说,您可以使用

\b[2-5]#([^#]*)#FR#

请参阅正则表达式演示详情

  • \b- 单词边界
  • [2-5]- 一个数字从25
  • #- 一个#字符
  • ([^#]*)- 第 1 组:零个或多个字符#
  • #FR#- 一个#FR#字符串。

推荐阅读