嗯,我想做的是将年份替换为 4 位数到 2 位数,例如
2018 年仅 18
例如:“菲亚特 - 147/Elba/Fiorino/Oggi/Panorama/Premio/Spazio/Uno - 01/1976 - 12/2001 - Mille - 1.0 8V/1.050/1.3/1.5”
就像 “菲亚特 - 147/Elba/Fiorino/Oggi/Panorama/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 年的数字,但如果您对公式有任何想法,那就没问题了
最佳答案
直接使用 .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}
- 任意 2 位数字(\d{2})
- 第 1 组($1
指的是替换模式中的该值):年份的最后两位数字\b
- 单词边界
如果您的年份值可能粘贴到其他数字、字母或 _
字符,则可能会删除单词边界。正则表达式也可能针对这些位置进行进一步调整。
关于regex - 将年份日期替换为四位数到两位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56023224/