我有一个字符串,可能包含数字,也可能不包含数字。如果有一个数字,它将是独立的,如'3200联邦快递FL‘或'10唐宁街’,或作为一个名称的一部分,如‘4 ST NW’,'I96‘或’is 28‘。我正在寻找一个正则表达式,它将忽略独立数字,并给出字符串的其余部分,但将数字保留为名称的一部分。
试过
Function getAddress(addr As String)
Dim allMatches As Object
Dim RE As Object
Set RE = CreateObject("vbscript.regexp")
RE.Pattern = "(\b[\d]+\b)"
RE.Global = True
RE.IgnoreCase = True
Set allMatches = RE.Execute(addr)
If (allMatches.Count <> 0) Then
result = allMatches.Item(0).submatches.Item(0)
End If
getAddress = result
End Function示例数据集
0 I64 EB MM 93
金斯克罗斯道1519号
28 VA288 298
约翰·伦道夫路
4700沃尔姆斯利BL
保龄球绿道/鲍伯白道
布鲁斯CT /FLORIDA AV
巴克路和白厅路
市区EWRESSWY第2街
HYHLAND VISTA / GEORGE WASHINGTON BL
HYHLAND VISTA / GEORGE WASHINGTON BL
HYHLAND VISTA DR / GEORGE WASHINGTON BL
I95 25 43
LAUARL岭轧机路/CLARENCE路
LAUARL岭轧机路/CLARENCE路
诺瓦霍华德街/SEMINARY路
老科瓦豪塞路R
老科瓦豪塞路R
伍德兰和罗诺克
1501 SAMS CR1
怀特海路15281号
1532年万宝路街
布兰德桥路16907号
1750年威廉街
预期产出:
I64 EB MM
金斯克罗斯路VA288约翰兰道夫路
保龄球绿道/鲍伯白道
布鲁斯CT /FLORIDA AV
巴克路和白厅路
市区EWRESSWY第2街
HYHLAND VISTA / GEORGE WASHINGTON BL
HYHLAND VISTA / GEORGE WASHINGTON BL
HYHLAND VISTA DR / GEORGE WASHINGTON BL
I95
LAUARL岭轧机路/CLARENCE路
LAUARL岭轧机路/CLARENCE路
诺瓦霍华德街/SEMINARY路
老科瓦豪塞路R
老科瓦豪塞路R
伍德兰和罗诺克
SAMS CR1
怀特黑德路
万宝路街
布兰德斯桥路
威廉街
发布于 2017-04-20 21:23:52
使用Replace对象的RegExp方法:
RE.Global = True
RE.Pattern = "\b\d+(\s|$)"
result = RE.Replace(addr, "") ' Remove all matches from string发布于 2017-04-20 20:43:23
尝试以下正则表达式:
(?![0-9]+\s).它查找后面跟着空格的连续数字,并否定它们。
发布于 2017-04-20 20:44:40
它似乎更容易匹配独立数字,并将它们替换为空字符串。独立的数字正则表达式(包含周围的空格)是
\s*\b\d+\b\s*演示:https://regex101.com/r/JuEAQd/1
注意:上面演示中的输出结果有点混淆,因为所有测试字符串都放入一个输入,但当一个接一个地输入时,https://regex101.com/r/cvwUzQ/1 https://regex101.com/r/g07lGg/1 https://regex101.com/r/XC1CLR/1。
https://stackoverflow.com/questions/43529300
复制相似问题