Regex 正则表达式,用于在匹配后直到行尾获取内容

Regex 正则表达式,用于在匹配后直到行尾获取内容,regex,vbscript,Regex,Vbscript,示例:如果它像 some text Match: here is the content I want<br> Match: here is the content I want 一些文本匹配:这是我想要的内容 Match:这是我想要的内容 我试图在Match:之后获取任何信息,直到行尾 我现在使用的正则表达式是?=Match:(.*)=\n 问题1:匹配:未被消除。 问题2:有些html标记是随机出现的。因此,如果它们发生,我必须消除它们 所以在任何情况下,我只需要“这是我想要的内

示例:如果它像

some text Match: here is the content I want<br> Match: here is the content I want 一些文本匹配:这是我想要的内容
Match:这是我想要的内容 我试图在
Match:
之后获取任何信息,直到行尾

我现在使用的正则表达式是
?=Match:(.*)=\n

问题1:匹配:未被消除。
问题2:有些html标记是随机出现的。因此,如果它们发生,我必须消除它们

所以在任何情况下,我只需要“这是我想要的内容”


有人能告诉我正则表达式需要做哪些修改吗?

有两种方法可以实现这一点:

  • 移除子匹配之前/之后的所有内容:

    s = "..."
    
    Set re = New RegExp
    re.Pattern = "^[\s\S]*?Match: (.*)[\s\S]*"
    
    WScript.Echo re.Replace(s, "$1")
    
    s = "..."
    
    Set re = New RegExp
    re.Pattern = "Match: (.*)"
    
    For Each m In re.Execute(s)
      WScript.Echo m.Submatches(0)
    Next
    
    ^[\s\s]*?
    匹配任何字符(包括换行符),直到第一次出现术语“匹配:”<代码>(.*)然后将所有字符匹配到下一个换行符。表达式必须覆盖子匹配前后的所有内容,因为替换不会触及字符串中不匹配的部分

  • 提取子匹配:

    s = "..."
    
    Set re = New RegExp
    re.Pattern = "^[\s\S]*?Match: (.*)[\s\S]*"
    
    WScript.Echo re.Replace(s, "$1")
    
    s = "..."
    
    Set re = New RegExp
    re.Pattern = "Match: (.*)"
    
    For Each m In re.Execute(s)
      WScript.Echo m.Submatches(0)
    Next
    
    使用这种方法,正则表达式更简单,因为它只需要覆盖您实际想要匹配的内容(而不必覆盖您想要删除的部分)。另一方面,子批次的处理需要更多的工作


  • 请重新格式化您的问题,并确保您共享您正在使用的确切模式,并用正则表达式描述问题。@WiktorStribiżew:已完成更改,我也提到了我面临的问题。我强烈怀疑您是否提供了确切的正则表达式。是的。如果你没有在网上找到任何关于格式化帖子的帮助-。这不仅仅是格式化,我们可以访问问题源并查看原始文本。问题是,该模式不是一个可以在VBScript中使用的真正的正则表达式模式。没有这一点,问题就不清楚了。