RegEx在字符串中获取字符串

时间:2010-08-18 22:44:26

标签: regex perl

假设我们有类似的东西:

<div1>
    <h1>text1</h1>
    <h1>text2</h1>
</div1>
<div2>
    <h1>text3</h1>
</div2>

使用RegExp我们需要获得text1text2,而不是text3

怎么做?

提前致谢。

修改 这只是一个例子。 我正在解析的文本可能只是纯文本。 我想要完成的主要事情是列出文档特定部分的所有字符串。 我给出了这个HTML代码,因为它完全类似于我需要得到的东西。

(?siU)<h1>(.*)</h1>会解析所有三个字符串,但是如何才能获得前两个字符串?

EDIT2: 这是另一个相当愚蠢的例子。 :)

Section1

This is a "very" nice sentence.
It has "just" a few words.

Section2

This is "only" an example.

The End

我需要从第一部分开始引用,而不是第二部分。

然而,(?siU)"(.*)"再次从全文中引用引用的单词, 我只需要在Section1Section2之间的那些。

这适用于"Rainmeter" application,它显然使用Perl正则表达式语法。

对不起,但我无法更好地解释。 :)

2 个答案:

答案 0 :(得分:2)

使用DOM库和getElementsByTagName('div'),您将获得一个nodeList。您可以使用->item(0)引用第一个项目,然后使用div作为上下文节点getElementsByTagName('h1'),使用->nodeValue属性获取文本。

答案 1 :(得分:2)

对于提供的两个示例的一般情况 - 用于Rainmeter正则表达式 - 您可以使用:

第一个样本的

(?siU)<h1>(.*)</h1>(?=.+<div2>)

(?siU)"(.*)"(?=.+Section2)第二次。

请注意,Rainmeter似乎为您提供了帮助,但您可能需要将"更改为上面的\"

这两个都使用Positive Lookahead但要注意:在嵌套标签/结构的情况下,或者如果有多个Section1和Section2,两个解决方案都将失败。正则表达式不是这种解析的最佳工具。

但也许这足以满足您目前的需求?