Vbscript正则表达式,找到2个已知字符串之间的所有内容

时间:2015-07-08 08:15:31

标签: regex vbscript

我想选择两个已知字符串之间的所有文本。比如说以下文字

*starthere
*General Settings 
*  some text1
*  some text2
*endhere

我想选择" * starthere"之间的所有文字。和" * endhere"使用vbscript。以便最终输出如下所示

 *General Settings 
    *  some text1
    *  some text2

我知道使用正则表达式会更简单,因为我读取的文件中有多个这种模式的实例。

我试过类似下面的内容

/(.*starthere\s+)(.*)(\s+*endhere.*)/
/(*starthere)(?:[^])*?(*endhere)/

但它们似乎不起作用,它甚至可以选择起始和结束字符串。 Lookforward和backword似乎也不起作用,我不确定他们是否支持vbscript。

这是我正在使用的代码:

'Create a regular expression object 
Dim objRegExp
Set objRegExp = New RegExp 'Set our pattern
objRegExp.Pattern = "/\*starthere\s+([\s\S]*?)\s+\*endhere\b/" objRegExp.IgnoreCase = True
objRegExp.Global = True 
Do Until objFile.AtEndOfStream 
 strSearchString = objFile.ReadLine
 Dim objMatches
 Set objMatches = objRegExp.Execute(strSearchString)
 If objMatches.Count > 0 Then
  out = out & objMatches(0) &vbCrLf
  WScript.Echo "found"
 End If
Loop
WScript.Echo out
objFile.Close

1 个答案:

答案 0 :(得分:2)

您可以使用:

/\bstarthere\s+([\s\S]*?)\s+endhere\b/

并抓住被捕获的组#1

([\s\S]*?)将匹配这两个标记之间的任何文字,包括换行符。