我有一個看起來像這樣的字符串列表,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)
您可以在此處找到上述實施的示例運行。
添加回答
舉報
0/150
提交
取消