對于一個類,我需要提取元素之間的所有內(nèi)容<seg>......</seg>我正在嘗試通過 Python 來執(zhí)行此操作,而不是浪費時間手動執(zhí)行此操作(它超過 400 行)。我現(xiàn)在的代碼方式是這樣的(我在網(wǎng)上找到的一個代碼并做了一些更改,以便它不打印行號):import re err_occur = [] pattern = re.compile(r"<seg>(.*)</seg>")try: with open ('corpus.txt', 'rt') as in_file: for linenum, line in enumerate(in_file): if pattern.search(line) != None: err_occur.append((linenum, line.rstrip('\n'))) for linenum, line in err_occur: print(line, sep='')except FileNotFoundError: print("Input file not found.")我遇到的唯一問題是它會在結(jié)果中打印<seg>和</seg>,這是我不希望發(fā)生的。我嘗試創(chuàng)建組(您可以在我使用模式變量中的括號中看到),但我不知道如何操作代碼以僅返回組 1(我嘗試了許多不同的方法)。
3 回答

哆啦的時光機
TA貢獻1779條經(jīng)驗 獲得超6個贊
您需要使用positive lookbehind
和一個positive lookahead
. 正則表達式中的<seg>
and<\seg>
會消耗一些文本,因此您可以在結(jié)果中看到它們,但是前瞻和后視只是分別檢查是否存在</seg>
和<seg>
是否存在,而不會消耗任何字符。它只匹配那些字符串。
TL;博士: 前瞻和回顧后匹配字符串中 <seg>string</seg>
,而不是標(biāo)簽。
所以你的正則表達式應(yīng)該是這樣的(?<=<seg>).*(?=</seg>)
,這應(yīng)該沒問題。
有一些documantation這里
添加回答
舉報
0/150
提交
取消