我有一个地址清单,目前相当不干净。它们的格式如下:
955 - 959 Fake Street
95-99 Fake Street
4-9 M4 Ln
95 - 99 Fake Street
99 Fake Street
我想做的是把街道名称和街道号码分开。我需要一个正则表达式,这个表达式对于
955 - 959
95-99
4-9
95 - 99
99
我现在有这样的情况:
^[0-9][0-9]\s*+(\s*-\s*[0-9][0-9]+)
它适用于两位数字地址,但不适用于三位或一位地址。
谢谢
发布于 2017-05-05 01:19:03
我不知道你想在这里做什么,\s*+
,但是你基本上有了最后一部分[0-9][0-9]+
的答案,它会在最后找到2+数字。
也许可以试试这个(它更简洁)。这将搜索1+位数而不是2+数。
\d+(\s*-\s*\d+)?
发布于 2017-05-05 01:20:28
您可以对2-3个数字使用大括号{2,3},但*+
也不正确。
/^(([0-9]{1,3}\s-\s)?[0-9]{1,3})\s/
我嵌套了大括号,所以您只需要正则表达式的第一个结果。
它就这样破裂了
([0-9]{1,3}\s-\s)?
首先,是否有一个1-3位数和空格-空格可选?
然后..。它的结尾是一个1-3位数,后面是空格吗?
发布于 2017-05-05 01:22:30
以您为例,您可以:
/^(\d+[-\s\d]*)\s/gm
解释:
/^(\d+[-\s\d]*)\s/gm
^ start of line
^ at least 1 digit and as many digits as possible
^ any character of the set -, space, digit
^ zero or more
^ trailing space
^ multiline for the ^ start of line assertion
https://stackoverflow.com/questions/43794978
复制相似问题