簡體   English   中英

Python RegEx findall 沒有響應

[英]Python RegEx findall not responding

我只是遇到了一件奇怪的事情。 我正在使用Open ANC作為語料庫對文本爬行進行原型設計。

有些文本中re模塊沒有響應。 如果有人可以確認關於 RegEx 復雜性的 re 模塊可以處理我很好。

正則表達式是preceding(?:[^A-Za-z0-9\\n\\r]*\\w+[^A-Za-z0-9\\n\\r]*)+acquired

出現問題的文字是:

我的主張是林肯的講話表達了當時在歐洲流行的相同想法。 每個具有共同歷史和語言的民族構成一個民族,民族生存的自然形態是國家結構。 美國人構成一個有機的國家單位的想法隱含地解釋了為什么南方十一個州不能走自己的路。 當他就任總統時,林肯仍然在談論聯邦而不是一個國家。 但在前幾十年的辯論過程中,聯合的概念獲得了國家的形而上學品質。 在他的第一次就職演說中,林肯提到了“感情紐帶”,甚至在查爾斯頓港的薩姆特堡開槍之前,他就強調了歷史斗爭牢不可破的紐帶:

產生問題的python代碼:

import re

txt = "post text here"
regex = r"preceding(?:[^A-Za-z0-9\n\r]*\w+[^A-Za-z0-9\n\r]*)+acquired"
re.findall(regex, txt)

您的模式受到災難性回溯的影響。

這是一種適用於您的輸入的替代模式:

regex = r"preceding[^A-Za-z0-9\n\r]+(?:\w+[^A-Za-z0-9\n\r]+)+?acquired"

這假設必須始終至少有一個非單詞字符分隔單詞(否則它只會匹配一個長的、完整的單詞)。

(另請參閱:我如何識別邪惡的正則表達式?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM