python - 正则表达式也不返回分隔模式
问题描述
我正在尝试编写一个正则表达式来返回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>
在我的返回字符串中关闭或关闭它的任何部分。
解决方案
你的问题是这[\\n|</li>]
是一个字符类,这意味着任何一个字符\n
,,,|
等等<
。所以它(.+)
贪婪地匹配,只留下>
最后一部分。你想要(?:\\n|</li>)
的是(一个非捕获组,而不是一个字符类)。
(\\n|</li>)
也可以,但会将该部分捕获为第 2 组,您不需要它,因此添加?:
.
所以你的正则表达式变成:
<li>(.+)(?:\\n|</li>)
推荐阅读
- node.js - 打字稿多维数组的值未更新(为空)
- swift - 如何向 UIView 类添加底部边界?
- python - 明智地访问字典组件中列表的元素
- javascript - 单击按钮时如何选择我想要的数据(React JS)
- python - 如何迭代包含 jpg 图像的文件夹并在 python 中创建标签和图像列表?文件名 --> label.count.jpg
- java - Unity3D如何为Android插件添加权限到AndroidManifest.xml
- scala - Scala:如何定义通用 flatMap 和 map 方法
- python - Altair 数据聚合
- ios - performSegue(withIdentifier) 没有被调用
- clojurescript - 调用 google maps api 时超出最大调用堆栈