繁体   English   中英

VBA正则表达式后的一切

[英]VBA regex everything after words

我有一句话“lorem ipsum dolor mark words blah blah blah”

我只需要(但不包括)“标记词”之后的词。 “标记词”是句子中唯一保持不变的词。

我设法找到(?<=\\bmarker words\\s)(\\w+)这不仅在 vba 中不起作用,而且在标记词之后只返回一个词,例如: blah但我不知道如何将此扩展到字符串的其余部分(如果我要在 Excel 之外处理它)。 我的研究表明 vba 甚至根本不支持后视,所以我被卡住了。

VBA VBScript 正则表达式不支持后视构造。 您只能依靠捕获

\bmarker words\s+(.*)

查看正则表达式演示

结果在SubMatches集合中

\\bmarker words\\s+子模式匹配整个单词marker words后跟 1 个或多个空格和(.*)子模式匹配零个或多个字符而不是换行符并将其放入捕获组,内存缓冲区,其中可以使用特定于语言的方法进一步检索该值。

VBA代码:

Sub CaptureSubstring()
  Dim str As String
  Dim objMatches As Object
  str = "lorem ipsum dolor marker words blah blah blah"
  Set objRegExp = CreateObject("VBScript.RegExp")     ' Declare the RegExp object
  objRegExp.Pattern = "\bmarker words\s+(.*)"         ' Set pattern
  Set objMatches = objRegExp.Execute(str)             ' Execute the regex match
  If objMatches.Count <> 0 Then                       ' Check the result
    Debug.Print objMatches.Item(0).SubMatches.Item(0) ' Print Match 1, Submatch 1
    ' > blah blah blah
  End If
End Sub

尝试以下正则表达式:

"(?:marker words)(.*?)$"

您的字符串应该在第一组中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM