gpt4 book ai didi

regex - 匹配一组几乎等效元素中的单个元素的正则表达式是什么?

转载 作者:行者123 更新时间:2023-12-01 11:35:56 24 4
gpt4 key购买 nike

在以下内容中:

<page1 ...>
...
</page>

<page2 ...>
...
</page>

<page3 ...>
...
<queue>...</queue>
...
</page>

如何找到最后一个元素(包含队列标记的元素)的匹配项?

我试过了

(?s)<page.*?<queue>.*?</page>

但这与整个内容相匹配。我一直在尝试使用前瞻,但无法弄清楚。

最佳答案

您可以针对您的特定用例使用以下怪物:

<page(?:[^/]+/(?!page))+queue>(?:[^/]+|/(?!page))+/page>

..不确定这是否是学习正则表达式的最佳示例,绝对不是用于在现实生活中解析 XML 的好主意。但这是可能的。不要忘记转义 /通过 \/在内部引用正则表达式的语言中 /.../构造。

参见技术说明 http://regex101.com/r/qZ0yR1/2 .

逻辑如下:

  1. <page.../queue>.../page> - 获取包含队列结束标记的页面元素的内容

  2. [^/]+/(?!page) - 将所有文本匹配到下一个结束标记,但要确保它不是页面的结束标记

  3. (?:[^/]+/(?!page))+queue> - 根据需要多次重复上述匹配,直到结束标记用于队列

  4. (?:[^/]+|/(?!page))+/page> - 然后根据需要重复多次,直到结束标记用于页面(我使用 | 作为 (?:[^/]+/(?!page))+[^/]+/page> 的快捷方式,因为第 2 点中的表达式仅在以下结束标记不用于页面时才匹配文本,但我们最终需要完全匹配该文本)

关于regex - 匹配一组几乎等效元素中的单个元素的正则表达式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27177956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com