Regex: 捕获字符串中的第一个迭代

By simon at 2019-05-15 • 0人收藏 • 21人看过

我有几个字符串,我想提取名称与正则表达式。 整个名称与字符串的其他部分一样位于一个或多个管道中。

每个字符串可能是空白的,一些样本:

女子大学医院 | 76 Grenville Street | ACTT 诊所6东 | 多伦多 ON M5S 1B2

""

健康与健康中心 | 多伦多大学 | 学院街214号,111教室 | 多伦多,M5T 2Z9

皇家卫生保健中心 | 阿德莱德街西130号 | 下广场 | 邮政信箱92号 | 多伦多,M5H 3P5

"套房1038 | 海湾街790号 | 邮政信箱51号 | 多伦多 ON M5G 1N8 M5G 1N8"

"p.o. Box 19569 | Toronto ON M4W3T9"

我有这个正则表达式

^(. *\|)*((? I). * (room | st. | street | road | avenue | p.o. | st.). *\|(? - i). *)$

如果字符串中只有一个匹配项,则可以很好地进行分组。

但是,如果有一个以上的迭代或另一个匹配,则使用最后一个迭代或最后一个匹配进行分组。

例如,对于字符串"Sleep & Alertness Clinic | 790 Bay street | Suite 800 | st. 32 | Toronto ON M5G 1N8"

结果就是

  1. 第一组。 睡眠与警觉诊所 | 海湾街790号 |
  2. 第二组。 32 st. | Suite 800 | Toronto ON M5G 1N8

我想要的是:

  1. 第一组。 睡眠与警觉诊所 |
  2. 第二组。 790 Bay street | 32 st. | Suite 800 | Toronto ON M5G 1N8
1 个回复 | 最后更新于 2019-05-15
2019-05-15   #1

在正则表达式中,可以向.*不要太贪心,第一场比赛后就停止。

^(. *? (? 房间号。 | 街道 | 道路 | 大道 | p。 O  .) [^|]*)(. *)$

下面是一个演示

登录后方可回帖

Loading...