假设我们有类似的东西:
<div1>
<h1>text1</h1>
<h1>text2</h1>
</div1>
<div2>
<h1>text3</h1>
</div2>
使用RegExp我们需要获得text1
和text2
,而不是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)"(.*)"
再次从全文中引用引用的单词,
我只需要在Section1
和Section2
之间的那些。
这适用于"Rainmeter" application,它显然使用Perl正则表达式语法。
对不起,但我无法更好地解释。 :)
答案 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,两个解决方案都将失败。正则表达式不是这种解析的最佳工具。
但也许这足以满足您目前的需求?