regex - 获取特定字符串之间的文本作为正则表达式中的不同字符串
问题描述
我一直在尝试在两个字符串('Item'和'Item')之间获取文本,但是由于'Item'在整个大文档(本身就是一个字符串)中多次出现,我几乎得到了整个文档。我无法弄清楚正则表达式代码来获取一个“项目”和下一个“项目”之间的文本,直到最后一个“项目”作为不同的字符串。
我已经尝试过正则表达式代码,但我无法弄清楚。
第一次尝试 :
(?<=Item)(.*)(?=Item)
第二次尝试:
value = search('Item(.+)Item', text)
if value is not None:
value = value.group(1)
第一次尝试选择几乎所有文档
第二次尝试只给出“Item”和“Item”之间第一次出现的文本。
任何帮助将不胜感激。
解决方案
import re
string = 'Item Hello this is a sample Item String on StackOverflow Item Posted on a Item Wednesday'
print re.findall(r"(?<=Item ).+?(?= Item|$)", string)
输出:
['Hello this is a sample', 'String on StackOverflow', 'Posted on a', 'Wednesday']
解释:
(?<=Item ) # positive lookbehind, make sure we have "Item " before
.+? # 1 or more any character, not greedy
(?= Item|$) # positive lookahead, make sure we have "Item " or end of line after
推荐阅读
- php - 会话过滤器上的两个用户
- windows - 如何在 Windows 10 命令提示符下设置左/右滚动条?
- postgresql - Postgres - 具有多列和 NULL 值的唯一约束
- scale - 有没有办法反射球体,使其在 A 帧中表现为天空盒?(A-frame 文档建议不起作用)
- ios - 如何将保存按钮设置为 swift 5?
- sql-server - 如何使用 SQL Server 数据库、EF Core 和 LINQ 进行词法字符串比较 >=?
- javascript - 从 Amazon S3 下载 res.download 文件
- javascript - 如何为大于 0 的数字编写嵌套 for 循环
- python - Trace Operation in Python not Forming Correct Array Shape
- python - 关于 ImageHash 库中哈希的减号运算符的困惑