用正则表达式从地址中提取数字



我需要从法语地址中提取数字。

这是我的正则表达式:

d+( |d+|bte|-|boite|[w] {1}|([a-z] ){1}){0,2}

regex101的示例:https://regex101.com/r/ZP8DSV/1它部分工作,但不是对所有行。

我需要提取数字+额外信息。

如果我取这个列表,它应该给我这个(每一行):

|---------------------------------------|--------------|
|              Original                 |     Result   |
|---------------------------------------|--------------|
| rue hovémont 3                        | 3            |
| rue hovémont 3-5                      | 3-5          |
| rue hovémont 3 5                      | 3 5          |
| Rue hovémont 35                       | 35           |
| Rue hovémont 46 A                     | 46 A         |
| Rue hovémont 46 A1                    | 46 A1        |
| 46 A1 Rue hovémont                    | 46 A1        |
| 46 A Rue hovémont                     | 46 A         |
| Rue du pont de pierre, 1              | 1            |
| Chaussée d alseg 416 c                | 416 c        |
| Chaussée d alseg, 416 c               | 416 c        |
| Chaussée d alseg 416c                 | 416c         |
| Chaussée d alseg, 416c                | 416c         |
| 416 c Chaussée d alseg                | 416 c        |
| 416 c, Chaussée d alseg               | 416 c        |
| 416c Chaussée d alseg                 | 416c         |
| 416c, Chaussée d alseg                | 416c         |
| Square de la demi-lune 7 boite 5      | 7 boite 5    |
| 7 boite 5 Square de la demi-lune      | 7 boite 5    |
| Rue aux laines 150/58                 | 150/58       |
| Rue de la forêt, 95                   | 95           |
| Chaussée d'anvers 294                 | 294          |
| Avenue jean sébastien bach, 24 bte 32 | 24 bte 32    |
| 10 bte 1 rue des volontaires          | 10 bte 1     |
| Rue du 5ème Tïme 5 bte 2              | 5 bte 2      |
| Rue du 5eme Tïme 5 bte 2              | 5 bte 2      |
| Rue du 5 eme Tïme 5 bte 2             | 5 bte 2      |
| Rue du 5 ème Tïme 5 bte 2             | 5 bte 2      |
| Rue du 1 er Tïme 5 bte 2              | 5 bte 2      |
| 20a Test Strasse                      | 20a          |
|---------------------------------------|--------------|
你能帮我处理这个案子吗?:)

下面是一个工作正则表达式,用于捕获以数字开头或结尾的文本:

^dw*(?:h+(?>boite|bte|pLd?|d)b)*|hKd+pL?(?:[-/]d+|h+(?:boite|bte|pLd?|d+)b)*$

更新的RegEx Demo

$re = '~^dw*(?:h+(?>boite|bte|pLd?|d)b)*|hKd+pL?(?:[-/]d+|h+(?:boite|bte|pLd?|d+)b)*$~miu'

RegEx细节:

  • ^: Start
  • dw*:匹配以数字
  • 开头的单词
  • (?::启动非快照组
    • h+: Match 1+ whitespaces
    • (?>boite|bte|pLd?|d):匹配boitebte或单个数字或可选后跟数字的字母
    • b:字边界
  • )*:结束非抓包组。匹配该组中的0个或多个。
  • |: or
  • h:匹配空白
  • K:重置匹配
  • d+pL?:匹配1+数字后跟可选字母
  • b:文字边界
  • (?:[-/]d+|h+(?:boite|bte|pLd?|d+)b)*:匹配剩余部分
  • $: End

最新更新