python 正则获取markdown内的图片

本文介绍了一种使用正则表达式从Markdown文本中提取图片描述和URL的方法,通过Python实现,适用于处理包含图片链接的Markdown内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(?:!\[在这里插入图片描述\]\((.*?)\))     #只提取url
或
(?:!\[(.*?)\]\((.*?)\))       ##提取描述与rul

test.py

import re
if __name__=="__main__":
    imagess  ='![在这里插入图片描述](https://img-blog.csdnimg.cn//20200504143235110.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3Njk2OTkw,size_16,color_FFFFFF,t_70)'
    #image_arr = re.findall(r'(?:!\[在这里插入图片描述\]\((.*?)\))',imagess)#只提取url
    image_arr = re.findall(r'(?:!\[(.*?)\]\((.*?)\))',imagess)#提最述与rul
    print('hello')
    print(image_arr)

result

['https://img-blog.csdnimg.cn//20200504143235110.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3Njk2OTkw,size_16,color_FFFFFF,t_70']


[('在这里插入图片描述', 'https://img-blog.csdnimg.cn//20200504143235110.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzM3Njk2OTkw,size_16,color_FFFFFF,t_70')]
### 正则表达式匹配 Markdown 表格语法 为了匹配 Markdown 文本中的表格结构,可以构建如下正则表达式: ```regex ^\s*\|?.+\|.+$\n(\s*\|?:-+:?\|:-+:?-+:\|.*$\n)*(\s*\|?.+\|.+$)* ``` 此模式能够识别由管道符 `|` 和破折号 `-` 构成边界并分隔列的简单表格[^2]。 对于更复杂的场景,考虑到不同风格的表格定义方式以及可能存在的空白行等问题,建议采用更为严谨的方式处理。下面是一个改进版本的例子,该例子不仅限于简单的三行表头加数据形式,还允许存在多行记录,并且能适应更多样化的格式变化: ```regex ^(?:(?!\|\s*$)[ \t]*\|[ \t]*(?:(?! *\| *(?:$|--)).*)?(?: *[|](?:(?! *--).*)?)?[ \t]*\|$[\r\n]+(?:(?= *\|-*\|-*)(?:[ \t]*\|? *(?::?-) *(?: *[|]-*: *){0,}[ \t]*)\|$[\r\n]+)(?=.*\S)((?:[ \t]*\|?.*(?: *[|].*)?$)+) ``` 上述正则表达式的功能在于: - 支持带有对齐指示符(冒号)的第二行来指定每一列的内容对其方式; - 能够正确解析包含或不包含首尾竖线的情况; - 对空单元格友好,不会因为缺少内容而失败; 通过这种方式,几乎涵盖了大部分标准 Markdown 表格可能出现的形式[^3]。 #### Python 实现示例 以下是利用Python实现的一个函数,用来提取给定字符串内的所有Markdown表格: ```python import re def extract_markdown_tables(text): table_pattern = r'^(?:(?!\|\s*$)[ \t]*\|[ \t]*(?:(?! *\| *(?:$|--)).*)?(?: *[|](?:(?! *--).*)?)?[ \t]*\|$[\r\n]+(?:(?= *\|-*\|-*)(?:[ \t]*\|? *(?::?-) *(?: *[|]-*: *){0,}[ \t]*)\|$[\r\n]+)(?=.*\S)((?:[ \t]*\|?.*(?: *[|].*)?$)+)' tables = [] matches = re.findall(table_pattern, text, flags=re.MULTILINE | re.DOTALL) for match in matches: cleaned_match = '\n'.join([line.strip() for line in match.splitlines()]) tables.append(cleaned_match) return tables sample_text = """ Here is some markdown content with a table: First Header | Second Header -- | ------------- Content Cell | Content Cell Content Cell | Content Cell Followed by more text. """ tables_found = extract_markdown_tables(sample_text) for idx, tbl in enumerate(tables_found, start=1): print(f"Table {idx}:\n{tbl}\n") ``` 这段代码会遍历输入文本,找到所有的Markdown表格并将它们打印出来。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值