【发布时间】:2013-12-21 04:23:47
【问题描述】:
我有这种文本1323-DI-004 (2013-07-16).pdf,我想将日期放在括号中。我尝试使用正则表达式(\(.*)\)。它给了这个(2013-07-16)。我想得到相同的结果,但没有括号。
这是一个 VBA 代码。
有可能吗?怎么做?
【问题讨论】:
我有这种文本1323-DI-004 (2013-07-16).pdf,我想将日期放在括号中。我尝试使用正则表达式(\(.*)\)。它给了这个(2013-07-16)。我想得到相同的结果,但没有括号。
这是一个 VBA 代码。
有可能吗?怎么做?
【问题讨论】:
编辑:您使用的是 VBA,所以
Dim myMatches As MatchCollection
Set myRegExp = New RegExp
myRegExp.Pattern = "\((.*)\)"
Set myMatches = myRegExp.Execute(subjectString)
MsgBox(myMatches(1).Value) 'I think this be your reference? You may need to iterate myMatches to get the right one
假设这是一个完全符合 PCRE 的匹配平台(PHP、PERL 等 -- 不是 javascript),请使用 lookarounds 来实现这一点,匹配任一侧的 () 而不包括他们在捕获中:
(?<=\()(.*)(?=\))
查看实际操作:http://regex101.com/r/oI3gD6
如果您使用的是 javascript,这将不起作用,但是您可以使用 \((.*)\) 并检索第一个捕获组,这将是 () 中的内容。
【讨论】:
matches(0).Value - 大概你可以做到matches(1).Value获得第一组)。
Replace(Replace(ExtractDate(Path), "(", ""), ")", "")。丑陋的解决方案,但它的工作原理。