字符串后的正则表达式最大文本,非包含

时间:2016-10-05 23:01:05

标签: regex regex-lookarounds

我正在尝试在两个标签之间获取文本块,而且我遇到了一些困难。我的示例文本是:

<file powershell>
Windows 6.3 Build 9600 
</file>

我正在尝试使用标记作为分隔符,在<file powershell>之后和</file>之后的下一行开始抓取文本。现在我正在使用^<file.+>\n<\/file>,但这给了我标签。我应该只获得Windows 6.3 Build 9600。有什么帮助吗?谢谢!

2 个答案:

答案 0 :(得分:0)

您必须使用捕获组来捕获所需的内容。例如:

<file.+?>(.*?)<\/file>

<强> Working demo

无论如何,似乎你想要遍历一个xml,如果是这样你应该使用xml解析器或xpath表达式,如//file/text()//file[@powershell]/text(),假设powershell是一个格式正确的属性

答案 1 :(得分:0)

使用环顾四周:

(?<=<file powershell>)[^<]*(?=<\/file>)

看后面/前面断言,但不消费输入 - 即它不会成为比赛的一部分。

[^<]只是解决了点不匹配换行符的问题。