我有成千上万的文本行需要处理,而我感兴趣的行如下所示:

01/04/2019 09:35:41 - Test user (Additional Comments)


我目前正在使用此代码来过滤掉所有其他行:

If InStr(FullCell(i), " - ") <> 0 And InStr(FullCell(i), ":") <> 0 And InStr(FullCell(i), "(") <> 0 Then


FullCell是我正在处理的阵列。

我知道这不是最好的方法。有没有一种方法可以检查字符串开头是否有日期,格式为dd / mm / yyyy,然后提取“-”和“(”符号之间的用户名。

我在regex上玩了一下,看看是否有帮助,但是我的技能有限,无法在同一代码中实现VBA和regex。

什么是做到这一点的最佳方法。

最佳答案

假设Fullcell(i)包含字符串,

If Left(Fullcell(i), 10) Like "##/##/####"


如果有日期,将返回True(请注意,它不会区分dd/mm/yyyymm/dd/yyyy



Mid(Fullcell(i), InStr(Fullcell(i), " - ") + 2, InStr(Fullcell(i), " (") - InStr(Fullcell(i), " - ") - 2)


将返回用户名

关于regex - 检查字符串中是否有日期,并提取字符串的一部分,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56117275/

10-09 01:12