我需要在ruby 中使用正则表达式捕获标记(html) (是的,我知道这很糟糕,但我没有找到任何替代方法,因为原始标记的格式真的很糟糕)。所以我有一个看起来像这样的原始文件:
<h3 class="grey" style="font-size:18pt;"><!-- #BeginEditable "Title" -->Sample Title
<!-- #EndEditable --></h3>
<!-- #BeginEditable "Text" --><p>Foo bar </p>
<p>
</p><ul>
<li>Sample li</li>
<p></p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p>Foo bar<span class="blue">Lorem ipsum dolor</span></p></blockquote>
<!-- #EndEditable -->
由于我无法更改原始标记(并且根本没有有意义的类!),我决定尝试一些正则表达式魔法。
我尝试使用正则表达式捕获评论中的内容,如下所示:
<!-- #BeginEditable "(Title|Text|Foo)" -->\s*([^!]+)\s*<!-- #EndEditable -->
显然,当!
标记内部存在时,这会失败,但是.*
当存在 html 标记(纯文本被捕获)时,用于捕获内部内容总是会失败。我在这里想念什么吗?(即带有负前瞻的版本?)