我们有一个“ street_number”字段,该字段在我们要设置格式的年份中已免费归档。使用正则表达式,我们要提取真实的“ street_number”和“ street_number_suffix”。
例如:17 b
“ street_number”为17
,“ street_number_suffix”为b
。
由于存在许多不同的模式,因此我无法正确调整正则表达式。我考虑使用2种不同的正则表达式,一种提取“ street_number”,另一种提取“ street_number_suffix”
这是我们要格式化的一组详尽的模式以及预期的输出:
# Extract street_number using PCRE
input street_number street_number_suffix
19-21 19 null
2 G 2 G
A null A
1 bis 1 bis
3 C 3 C
N°10 10 null
17 b 17 b
76 B 76 B
7 ter 7 ter
9/11 9 null
21.3 21 3
42 42 null
我知道我可以调用一个匹配的表达式的任何数字,直到连字符使用\d+(?=\-)
。它可以扩展到匹配,直到连字符或斜线使用\d+(?=\-|\/)
,心想,一旦我有\s
这种模式,21
从19-21
将匹配。添加条件可能并非如此简单,这就是为什么我要求您的帮助。
有人可以帮我这个忙吗?如果可以帮忙,请提交以下草稿:https : //regex101.com/r/jGK5Sa/4
编辑:在我编辑时,这是我能找到的最接近的正则表达式:
(?:(N°|(?<!\-|\/|\.|[a-z]|.{1})))\d+
认为N°10
不是的完整匹配,10
但是N°10
(而且我们的ETL不支持捕获组,因此我不能使用/......(\d+)/
)
要获取街道编号,您可以将模式更新为:
(?<![-/.a-z\d])\d+
说明
(?<!
负向后看
[-/.a-z\d]
使用charater类匹配列出的任何一个)
关闭负向后看\d+
匹配1个以上的数字本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句