正则表达式:删除模式及其之后的所有内容



我有带有标签的字符串<p></p>我只想获取标签之间的所有内容,而不是标签本身。

我已经让正则表达式的一半工作:^[^_]*<p>这给了我一个开始,但我仍然需要另一个正则表达式来摆脱</p>

如果标签p有任何属性(例如 <p class="foo"> ( 您可能希望改为<p.*?>右侧的部分。在这种情况下,不能使用后视运算符,因为所涉及的表达式没有固定长度(前瞻运算符没有这样的限制,尽管这在这里没有任何区别(。另一方面,Keep 运算符K在任何表达式之后都可以正常工作。

因此,Nahuel的答案可以改进如下(不包括包括换行符的观察(

    <p.*?>K.*?(?=</p>)

使用后看和前瞻来保持标签不匹配,并使用/s修饰符使. 还匹配换行符

(?<=<p>).*?(?=</p>)

否则没有/s 修饰符

(?<=<p>)[sS]*?(?=</p>)

因为如果 perl 可以使用 \K 缩短,仍然要保持不匹配

<p>K.*?(?=</p>)

相关内容

  • 没有找到相关文章

最新更新