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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用正则表达式获取用换行符分隔的单词之间的文本相关的知识,希望对你有一定的参考价值。

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

例如,

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

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

谢谢

答案

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

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

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

Set ReAddress = New RegExp
ReAddress.Pattern = "Address ([sS]+?) 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

以上是关于使用正则表达式获取用换行符分隔的单词之间的文本的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式查找文本中出现的所有占位符

使用正则表达式在 Visual Studio 中选择由双换行符分隔的文本块

用于匹配单词的正则表达式,除非前一行以单词结尾

C# 正则表达式匹配具有分隔符的字符串

如何使正则表达式在每个单词之间强制使用逗号?

Java - 正则表达式拆分输入文本但保留分隔符[重复]