亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何返回與特定模式不匹配的字符串列表?

如何返回與特定模式不匹配的字符串列表?

慕尼黑5688855 2021-12-29 18:13:20
我試圖從文本文件中返回與特定模式不匹配的所有結果,但我在語法上遇到了困難。pattern is [A-Z]+\_[A-Z0-9]+\_[0-9]+\_[0-9]+\.[A-Z]{3}嘗試了以下沒有成功:'^(?![A-Z]+\_[A-Z0-9]+\_[0-9]+\_[0-9]+\.[A-Z]{3}$).*$'r'^(?!([A-Z]+\_[A-Z0-9]+\_[0-9]+\_[0-9]+\.[A-Z]{3}).)*$'下面是匹配模式的代碼,現在我需要找到所有不匹配的條目。pattern = r'[A-Z]+\_[A-Z0-9]+\_[0-9]+\_[0-9]+\.[A-Z]{3}'regex1 = re.compile(pattern, flags = re.IGNORECASE)regex1.findall(text1)數據樣本如下:plos_annotate5_1375_1.txt plos_annotate5_1375_2.txt plos_anno%tate5_1375_3.txt plos_annotate6_1032_1.txt第三根弦是我想拉的
查看完整描述

3 回答

?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

如果您可以在 Python 中進行否定,為什么要在正則表達式中進行否定?


strings_without_rx = [s for s in the_strings if not regex1.search(s)]

如果你想掃描文件行,你甚至不需要存儲它們,因為一個打開的文件是它的行的可迭代:


with open("some.file") as source:

  lines_without_rx = [s for s in source if not regex1.search(s)]

# Here the file is auto-closed.


查看完整回答
反對 回復 2021-12-29
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

您可以檢查您的正則表達式是否不是數學運算:

if regex.match(text1) is None:
    # Do magic you need


查看完整回答
反對 回復 2021-12-29
?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

我建議在您的模式中使用否定前瞻斷言

r'(?![A-Z]+\_[A-Z0-9]+\_[0-9]+\_[0-9]+\.[A-Z]{3}[^A-Za-z0-9_+\.-]+)'

沒有任何循環,如果您使用它,它將為您提供所有不匹配的模式findall

re.findall(r'(?![A-Z]+\_[A-Z0-9]+\_[0-9]+\_[0-9]+\.[A-Z]{3}[^A-Za-z0-9_+\.-]+)')


查看完整回答
反對 回復 2021-12-29
  • 3 回答
  • 0 關注
  • 230 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號