我需要使用regex模式替换xml文件中的日期和时间。
XML文本将包含:
- 日期:2022年12月1日1时17分
- 日期:2022年12月1日星期二下午2时17分
- 日期:2022年12月2日3时17分
上述正则表达式的可能模式为:
- w:日期="[\d\W]\w[\d\W]\w”
但它不会替换任何内容,并且生成的字符串在以下VBA代码中保持不变:
Sub ChangeDateTime()
Dim sWOOXML As String
Set objRegEx = CreateObject("vbscript.regexp")
objRegEx.Global = True
objRegEx.IgnoreCase = True
objRegEx.MultiLine = True
objRegEx.Pattern = "w:date=" & Chr(34) & "[\d\W]\w[\d\W]\w" & Chr(34)
sWOOXML = ActiveDocument.Content.WordOpenXML
sWOOXML = objRegEx.Replace(sWOOXML, "")
ActiveDocument.Content.InsertXML sWOOXML
Beep
End Sub
1条答案
按热度按时间btxsgosb1#
您的
[\d\W]\w[\d\W]\w
正则表达式阻止匹配,因为它只找到两个双引号之间的数字或非单词字符+单词字符序列的两次重复,而您在那里有更多的字符。您可以使用
请参阅regex demo。注意,您可以使用双
"
将双引号添加到字符串中,而不需要使用Chr(34)
。这是一个详细的模式,其中
\d{1,2}
匹配一个或两个数字,\d{4}
匹配四个数字,其余的是不言自明的。