gpt4 book ai didi

regex - 使用 EXCEL VBA REGEX 重新格式化字符串中的多个日期

转载 作者:行者123 更新时间:2023-12-04 20:31:09 25 4
gpt4 key购买 nike

我有一个应用程序,它以将文本复制到剪贴板的形式输出查询。

我想出了将文本解析为数组,然后将其填充回 excel。

源字符串包含格式为“dd.mm.yyyy”的多个日期实例,我一直在输出列上使用查找/替换将其更改为“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”的格式是错误的,但我不太了解正则表达式来修复它。以上是通过(太多)小时的网络搜索来实现的。

谢谢你的帮助。

最佳答案

利用

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"

    现在,只有在不包含字母、数字或 _ 的情况下才能找到类似日期的字符串。字符。

    关于regex - 使用 EXCEL VBA REGEX 重新格式化字符串中的多个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50393898/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com