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

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

使用正則表達式過濾字符串列表

使用正則表達式過濾字符串列表

慕桂英546537 2022-12-06 16:14:46
我有一個看起來像這樣的字符串列表,strlist = [            'list/category/22',            'list/category/22561',            'list/category/3361b',            'list/category/22?=1512',            'list/category/216?=591jf1!',            'list/other/1671',            'list/1y9jj9/1yj32y',            'list/category/91121/91251',            'list/category/0027',]我想使用正則表達式查找此列表中的字符串,其中包含以下字符串/list/category/后跟任意長度的整數,但僅此而已,它不能包含任何字母或符號。所以在我的例子中,輸出應該是這樣的list/category/22list/category/22561list/category/0027我使用了以下代碼:newlist = []for i in strlist:    if re.match('list/category/[0-9]+[0-9]',i):        newlist.append(i)        print(i)但這是我的輸出:list/category/22list/category/22561list/category/3361blist/category/22?=1512list/category/216?=591jf1!list/category/91121/91251list/category/0027如何修復我的正則表達式?還有一種方法可以使用過濾器或匹配命令而不是 for 循環在一行中執行此操作嗎?
查看完整描述

1 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

您可以嘗試以下正則表達式:

^list\/category\/\d+$

上述正則表達式的解釋:

^- 表示給定測試字符串的開始。

\d+- 匹配出現一次或多次的數字。

$ - 匹配測試字符串的結尾。這是您的正則表達式遺漏的部分。

上述正則表達式的演示在這里。

Python 中的實現

import re

pattern = re.compile(r"^list\/category\/\d+$", re.MULTILINE)

match = pattern.findall("list/category/22\n"

               "list/category/22561\n"

               "list/category/3361b\n"

               "list/category/22?=1512\n"

               "list/category/216?=591jf1!\n"

               "list/other/1671\n"

               "list/1y9jj9/1yj32y\n"

               "list/category/91121/91251\n"

               "list/category/0027") 

print (match)

您可以在此處找到上述實施的示例運行。


查看完整回答
反對 回復 2022-12-06
  • 1 回答
  • 0 關注
  • 191 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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