Regex 使用正则表达式拆分VBA中的字符串
我是VBA新手,想寻求一些关于使用正则表达式的帮助,我希望能以某种方式启发我,我做错了什么。我目前正在尝试将一个日期拆分为单独的日期、月份和年份,可能的分隔符包括“、”、“-”和“/” 这就是我目前正在做的事情。然而,在RegEx.Split函数中似乎出现了一些错误,因为它似乎会导致代码挂起而无法进一步处理 为了证实这一点,我做了一些简单的事情:Regex 使用正则表达式拆分VBA中的字符串,regex,excel,vba,string-split,Regex,Excel,Vba,String Split,我是VBA新手,想寻求一些关于使用正则表达式的帮助,我希望能以某种方式启发我,我做错了什么。我目前正在尝试将一个日期拆分为单独的日期、月份和年份,可能的分隔符包括“、”、“-”和“/” 这就是我目前正在做的事情。然而,在RegEx.Split函数中似乎出现了一些错误,因为它似乎会导致代码挂起而无法进一步处理 为了证实这一点,我做了一些简单的事情: MsgBox("Hi") pattern = "(/)|(,)|(-)" dateStringArray() = RegEx.Split(dateSt
MsgBox("Hi")
pattern = "(/)|(,)|(-)"
dateStringArray() = RegEx.Split(dateString, pattern)
MsgBox("Bye")
“Hi”msgbox弹出,但“Bye”msgbox从未弹出,更深层的代码似乎根本没有被执行,这导致我怀疑RegEx.Split导致它被卡住
我能不能检查一下我是否真的在使用正则表达式。用正确的方法拆分?根据MSDN,Split(String,String)还返回一个字符串数组
谢谢大家!
编辑:我试图不探索CDate()函数,因为我试图不依赖用户计算机的区域设置。引用VbScript Regexp文档中的一个示例: 要进行测试,请调用:
MsgBox(SubMatchTest("Please send mail to dragon@xyzzy.com. Thanks!"))
简言之,您需要您的模式来匹配您想要提取的各个部分,其中包括spearators,可能类似于:
"(\d+)[/-,](\d+)[/-,](\d+)"
整个过程将在oMatch中完成,而数字(\d)将在oMatch.submatch(0)到oMatch.submatch(2)中结束。要在VBA中使用正则表达式拆分字符串,请执行以下操作:
公共函数SplitRe(文本作为字符串,模式作为字符串,可选IgnoreCase作为布尔值)作为字符串()
静态re作为对象
如果re什么都不是
Set re=CreateObject(“VBScript.RegExp”)
re.Global=True
re.MultiLine=True
如果结束
re.IgnoreCase=IgnoreCase
关于模式=模式
SplitRe=Strings.Split(re.Replace(text,ChrW(-1)),ChrW(-1))
端函数
用法示例:
Dim v
v=拆分(“a,b/c;d”、“[,;/”)
您真的需要为此使用RegEx
?CDate
是否符合要求?首先,Split
不是正则表达式的一种方法。其次,链接的引用是VB.Net,而不是VBA。在VBA中的正则表达式和拆分函数中有很多答案。@paul由于一些复杂的原因,我试图不依赖计算机上的区域设置。但CDate如何帮助分裂它呢?@chrisneilsen噢,这不是一回事吗?请原谅我自己的困惑。我一直试图在VBA中为正则表达式拆分找到它,但是没有用,但是谢谢你,我将尝试继续搜索datVar=CDate(“10/11/12”)
然后年(datVar)
,月(datVar)
,日(datVar)
nice-如果字符串已经包含vbNullChar
字符,则结果不好。如何返回MsgBox(v)?我得到运行时13错误。类型不匹配。什么是字符串()。这是一个返回另一个string类型函数的函数吗?
MsgBox(SubMatchTest("Please send mail to dragon@xyzzy.com. Thanks!"))
"(\d+)[/-,](\d+)[/-,](\d+)"