[英]Extracting a section of a string using regex with repeating ending words
我試圖在python中使用re模塊提取一些原始字符串。 待提取部分的結束由重復的單詞識別(重復多次),當前的努力總是捕獲重復單詞的最后一個匹配。 我該如何修改此行為?
已從pdf中提取文本文件。 整個PDF存儲為一個字符串。 字符串的一般格式如下:
*“***開始注釋:字母數字字符和字符的集合EndofsectionTopic A:字符串Endofsection”*
要捕獲的預期字符串是: “字母數字單詞和字符的集合”
在這種情況下使用的嘗試解決方案是:“re.compile(r”* {3}開始注釋:(。+)\\ sEndofsection“)
這種嘗試傾向於匹配整個字符串,而不僅僅是“字母數字單詞和字符的集合”。
一種可能的方法是使用Endofsection進行拆分,然后僅從第一部分提取字符串 - 這可行,但我希望使用re.compile找到更優雅的解決方案。
正則表達式中的兩個問題,
*
因為它是元字符\\*
(.+)
這是一個貪婪的量詞,並會盡可能地嘗試匹配,但由於你想要最短的匹配,你需要將它改為(.+?)
修復這兩個問題,為您提供正確的預期匹配。
Python代碼,
import re
s = "***Start of notes: Collection of alphanumeric words and characters EndofsectionTopic A: string of words Endofsection"
m = re.search(r'\*{3}Start of notes:(.+?)\sEndofsection', s)
if m:
print(m.group(1))
打印,
Collection of alphanumeric words and characters
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.