正则表达式 findall 模式
python 304
原文标题 :Regex findall pattern
我很难想出一个正则表达式来查找 id。例如,在我的文本中,我有多个 ID,但我想提取 Course 和 title 之间的 ID,如下所示:
"_class":"course","id":1565838, "title":"The Complete 2021 Web Development Bootcamp",
我想提取"_class":"course"
和"title"
之间的id号。我用什么表达方式?我还想在id之后提取标题。
回复
我来回复-
Woody1193 评论
该回答已被采纳!
你为什么要为此使用正则表达式?在我看来,您有一个 JSON 有效负载。如果您想从中获取 ID,它实际上比尝试使用正则表达式要简单得多:
import json jsonStr = '{"_class":"course","id":1565838, "title":"The Complete 2021 Web Development Bootcamp"}' data = json.loads(jsonStr) print("ID: " + data["id"]) # ID: 1565838
如果你真的想为此使用正则表达式,那么你可以使用
\"id\"\:(?P<id>\d*)\,
来匹配 ID 本身。将它与 Python 的 regex 库相结合将为您提供:import re m = re.search('\"id\"\:(?P<id>\d*)\,', raw) print("ID: " + m.group(1)) # ID: 1565838
或者,如果您有多个要查找的 ID,您可以修改它以删除结尾的逗号并通过
findall
函数进行搜索:ids = re.findall('\"id\"\:(?P<id>\d*)', raw) print(ids) # ['1565838']
最后,如果您还想要标题,您可以进一步修改它以获得两者:
m = re.search('\"id\"\:(?P<id>\d*).*\"title\"\:\"(?P<title>[\w\s]*)', raw) print(m["id"]) # '1565838' print(m["title"]) # 'The Complete 2021 Web Development Bootcamp'
2年前