好吧,我想做的是用4位到2位代替年份
2018年只有18
例如:“菲亚特-147 /厄尔巴岛/菲奥里诺/奥吉/全景/普里米奥/斯帕齐奥/乌诺-01/1976-12/2001-米勒-1.0 8V / 1.050 / 1.3 / 1.5”
就像 “ FIAT-147 /厄尔巴岛/菲奥里诺/奥吉/全景/ Premio / Spazio / Uno-01/76-12/01-Mille-1.0 8V / 1.050 / 1.3 / 1.5”
我尝试使用regex.replace,但是没有用...
Sub test()
Dim x, z
y = "FIAT - 147 / Elba / Fiorino / Oggi / Panorama / Premio / Spazio / Uno - 01/1976 - 12/2001 - Mille - 1.0 8V / 1.050 / 1.3 / 1.5"
Set regx = CreateObject("vbscript.regexp")
regx.Pattern = "(\d{4})"
regx.Global = True
Set x = regx.Execute(y)
Debug.Print regx.Replace(y, Right(x.Item(0), 2))
End Sub
它将返回此
FIAT - 147 / Elba / Fiorino / Oggi / Panorama / Premio / Spazio / Uno - 01/76 - 12/76 - Mille - 1.0 8V / 1.050 / 1.3 / 1.5
有帮助吗?我试图使用正则表达式只是为了找到4年的数字,但是如果您对公式有任何想法,就可以了
答案 0 :(得分:5)
直接将.Replace
与正则表达式匹配,该正则表达式与年份的前2位数字匹配,并匹配并捕获后2位数字:
y = "FIAT - 147 / Elba / Fiorino / Oggi / Panorama / Premio / Spazio / Uno - 01/1976 - 12/2001 - Mille - 1.0 8V / 1.050 / 1.3 / 1.5"
Set regx = CreateObject("vbscript.regexp")
regx.Pattern = "\b\d{2}(\d{2})\b"
regx.Global = True
Debug.Print regx.Replace(y, "$1")
输出:
FIAT - 147 / Elba / Fiorino / Oggi / Panorama / Premio / Spazio / Uno - 01/76 - 12/01 - Mille - 1.0 8V / 1.050 / 1.3 / 1.5
请参见regex demo。
\b\d{2}(\d{2})\b
模式匹配
\b
-单词边界\d{2}
-任意两位数字(\d{2})
-第1组($1
是指替换模式中的该值):一年的后两位数字\b
-单词边界如果您将年份值粘贴到其他数字,字母或_
字符上,则可能会删除单词边界。可以针对这些位置对正则表达式进行进一步的调整。