使用正则表达式获取用换行符分隔的单词之间的文本

问题描述 投票:0回答:1

我需要在两个单词之间获取文本,但这两个单词在vb脚本中使用正则表达式在不同的行中。

例如,

你好,世界 信息地址908 BLVD 大道物业类型占用

我需要使用正则表达式“908 BLVD Avenue”。所以我的正则表达式模式必须是“地址”和“属性类型”之间的任何内容。直到现在,我能够使用(?<=地址)(。*)\ s找到“908 BLVD”,但无法在相同的正则表达式函数中获取属性类型之前的文本。

谢谢

regex vbscript
1个回答
1
投票

在下面的示例中,代码[\s\S]+意味着我们正在寻找与所有空格和所有非空格的匹配,这仅仅意味着一切。它需要与VBScript的RegeExp中的换行符匹配。

另一方面,模式中的下一个?意味着我们不是在寻找一个贪婪的比赛,所以它会在遇到的第一个Property Type停止。否则,正则表达式引擎将继续扫描,直到文本结束,以便不必要地查找其他匹配项。

str = "Hello World" & vbNewLine & _ 
"Information Address 908 BLVD" & vbNewLine & _
"Avenue Property Type Occupied"

Set ReAddress = New RegExp
ReAddress.Pattern = "Address ([\s\S]+?) Property Type"
Set matches = ReAddress.Execute(str)
If matches.Count > 0 Then
    'print first group of first match
    WScript.Echo matches.Item(0).Submatches(0)
Else
    'no matches found
End If

预期产量:

908 BLVD
Avenue
© www.soinside.com 2019 - 2024. All rights reserved.