【发布时间】:2016-01-11 12:27:24
【问题描述】:
我正在尝试从通过正则表达式提供的大量数据中提取一些有用的数据。
示例字符串:
test 1:
hello op1 yviphf
hello op2 vipqwe
test 2:
hello op3
hello op4 vipgt
hello op5 zcv
以上包含 2 个测试编号,但也有多个。我想提取 op1、op2、op3、op4、op5 以及相应的测试编号。每个测试中的操作数可能会有所不同。
以下是我尝试编写但无济于事的模式:
test\s(\d+).*?(?:hello\s+(\S+).*?\n)+
输出可以是列表列表。主列表将第一个元素作为测试编号,第二个元素可能是包含所有操作的列表。
【问题讨论】:
-
分两步完成:首先匹配完整的部分,然后为每个部分匹配 op 值。
-
你需要使用正则表达式吗?
-
您在寻找
/s标志吗?见regex101.com/r/nU8aA5/1 -
this 会做吗?
-
你应该给出一个更好的示例字符串(更现实),因为它很难回答。 (实际上看起来如何,“hello”这个词是否开始每一行?)。如果你有很多数据,逐行工作更好,也许你可以避免正则表达式并获得更快的结果。
标签: python regex pattern-matching