首页 > 解决方案 > 正则表达式也不返回分隔模式

问题描述

我正在尝试编写一个正则表达式来返回li标签之间的字符串。

我正在查看以下两种类型的输入字符串:

情况1:

<li>some string with spaces and special characters

案例2:

<li>some string with spaces and special characters</li>

我正在编写一个 Python 脚本。

我拥有的正则表达式是:

<li>(.+)[\\n|</li>]

我面临的问题是在案例 2 中。 re.search正在返回:

some string with spaces and special characters</li

我不想</li>在我的返回字符串中关闭或关闭它的任何部分。

标签: pythonregex

解决方案


你的问题是这[\\n|</li>]是一个字符类,这意味着任何一个字符\n,,,|等等<。所以它(.+)贪婪地匹配,只留下>最后一部分。你想要(?:\\n|</li>)的是(一个非捕获组,而不是一个字符类)。

(\\n|</li>)也可以,但会将该部分捕获为第 2 组,您不需要它,因此添加?:.

所以你的正则表达式变成: <li>(.+)(?:\\n|</li>)


推荐阅读