【发布时间】:2021-06-05 13:40:24
【问题描述】:
由于背景很难解释,我正在编写伪代码, 我只对 Python-Regex-Pattern 感兴趣,希望你们能帮助我
我有以下输入文本(很多行以\n 作为行分隔符压缩为'.'):
.
.
1 Order
order1 stuff
order1 stuff
etc
ShippingMethod: Truck
.
.
2 Order
order2 stuff
order2 stuff
etc
ShippingMethod: Truck
.
.
Order Summary
.
.
我只想为每个订单单独匹配“订单”和“卡车”之间的文本,然后我会在程序中进一步迭代结果。
我的正则表达式:(为了更好的可读性,我将其拆分为“开始、内容、结束”)。
pattern = \d\s*Order + [.|\s|\S]* + Truck
当我执行这个匹配时,我得到一个结果,从 1 Order 开始并在 second Truck 停止:
1 Order
order1 stuff
order1 stuff
etc
ShippingMethod: Truck
.
.
2 Order
order2 stuff
order2 stuff
etc
ShippingMethod: Truck
我想要(在这种情况下)正好两个只包含一个订单内容的匹配项:
1 Order
order1 stuff
order1 stuff
etc
ShippingMethod: Truck
2 Order
order2 stuff
order2 stuff
etc
ShippingMethod: Truck
我希望很清楚我在寻找什么。非常感谢任何帮助。
在此先感谢,保持安全,保持健康!
您可能会提出的建议:
- 由于输入文本是 PDF 文本提取器的结果,因此您必须在行首和单词之间假设不同数量的空格。但是 \n 是可以信任的。基本上是写 \n 写 \s*\n
- 我不能使用“订单”作为模式的结尾部分,因为在最后一个订单之后,接下来就是一个摘要。
- “ShippingMethod”在我的语言中是不同的,这就是我在此示例中使用“Truck”的原因。我会设法重写。
【问题讨论】:
标签: python regex pattern-matching match multiline