python - Python:在文本中的两个字符串之间查找一个字符串
问题描述
我有这样的文字
s = """
...
(1) Literature
1. a.
2. b.
3. c.
...
"""
我想剪掉文学部分,但我在检测方面遇到了一些问题。
我在这里使用
re.search("(1) Literature\n\n(.*).\n\n", s).group(1)
但search
返回无。
期望输出是
(1) Literature
1. a.
2. b.
3. c.
我做错了什么?
解决方案
您可以匹配(1) Literature
2 个换行符,然后捕获所有以数字开头后跟一个点的行。
\(1\) Literature\n\n((?:\d+\..*(?:\n|$))+)
模式匹配:
\(1\) Literature\n\n
匹配 (1) 文献和 2 个换行符(
捕获组 1(?:
非捕获组\d+\..*(?:\n|$)
匹配 1+ 个数字和一个点,后跟换行符或字符串结尾
)+
关闭非捕获组并重复 1 次或多次以匹配所有行
)
关闭组 1
另一种选择是使用负前瞻捕获所有以下不以(
数字开头的行)
,然后修剪前导和尾随空格。
\(1\) Literature((?:\n(?!\(\d+\)).*)*)
推荐阅读
- javascript - 将变量设置为函数在变量使用后执行函数
- ethereum - 奇偶校验网络的 ethereumjs-tx 参数
- javascript - 如何输入状态数组和对象的道具?
- r - 在数据 R 中找不到列名时返回文本
- android - 如何在 CodenameOne 原生界面中使用具有自定义布局的 Android 库?
- python - 有没有办法让这个 python selenium 代码在无头模式下工作?
- c++ - 禁用 std::shared_ptr 的清理
- reactjs - subscribe() 没有功能,不能 getState()
- openshift - 无法启动部署在 OpenShift 中的 springboot 应用程序
- reactjs - 在回调中使用它