我有一个应用程序,它以复制文本的形式输出查询到剪贴板。
我已经将文本解析为数组,然后我将其填充回excel。
源字符串包含多个日期实例,格式为" dd.mm.yyyy"我一直在输出列上使用find / replace将其更改为" dd / mm / yyyy"。我想知道在使用正则表达式解析数组之前是否有可能/更快地替换字符串中的这些。
strPattern = "(0?[1-9]|[12][0-9]|3[01])[\.](0?[1-9]|1[012])[\.]\d{4}"
strReplace = "$dd\/dd\/dddd"
With regEx
.Global = True
.MultiLine = False
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.test(sString) Then
sString = regEx.Replace(sString, strReplace)
End If
最终结果不是我所希望的。我认为' strReplace'的格式。这是错误的,但我不能很好地了解正则表达式。以上是通过(太多)小时的网络搜索来实现的。
感谢您的帮助。
答案 0 :(得分:1)
使用
strPattern = "(0?[1-9]|[12][0-9]|3[01])\.(0?[1-9]|1[012])\.(\d{4})"
strReplace = "$1/$2/$3"
With regEx
.Global = True
.MultiLine = False
.IgnoreCase = False
.Pattern = strPattern
End With
sString = regEx.Replace(sString, strReplace)
注意:
$n
占位符来引用捕获组值[\.]
,它与\.
(或[.]
)提示:如果您想将这些字符串匹配为“整个字词”,请使用字词边界\b
:
strPattern = "\b(0?[1-9]|[12][0-9]|3[01])\.(0?[1-9]|1[012])\.(\d{4})\b"
现在,只有在没有用字母,数字或_
字符括起来时才能找到类似日期的字符串。