You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中匹配加粗/下划线格式字符串的正则表达式求解

匹配Markdown加粗和下划线格式的正则表达式方案

嘿,这个需求很清晰,我直接给你搞定正则表达式,再给你唠唠为啥这么写:

咱们要抓的是两种Markdown格式:**加粗内容**和__下划线内容__,核心是精准匹配成对的标记,还得把中间的内容准确捞出来——这里关键得用非贪婪匹配,不然容易把多个独立的格式块错误地连在一起匹配。

完整代码示例

import re

# 匹配**包裹的加粗字符串
bold_pattern = re.compile(r'\*\*(.*?)\*\*')
# 匹配__包裹的下划线字符串
underline_pattern = re.compile(r'__(.*?)__')

a = "__Hello__ **This** __is__ **Lego**"

# 提取所有加粗内容
bold_content = bold_pattern.findall(a)
print("提取到的加粗内容:", bold_content)  # 输出: ['This', 'Lego']

# 提取所有下划线内容
underline_content = underline_pattern.findall(a)
print("提取到的下划线内容:", underline_content)  # 输出: ['Hello', 'is']

正则表达式解释

  1. 加粗匹配正则 r'\*\*(.*?)\*\*'

    • \*\*:因为*在正则里是特殊元字符(用来表示匹配前面字符0次或多次),所以得加反斜杠\转义,才能匹配字面量的**
    • (.*?):括号是用来捕获我们要的内容;.*?是非贪婪匹配模式,会匹配任意字符直到遇到最近的**,这样就不会把**a** **b**这种多个加粗块错误地当成一个整体匹配
  2. 下划线匹配正则 r'__(.*?)__'

    • __:下划线_不是正则元字符,直接写就能匹配字面量的__
    • (.*?):同样用非贪婪匹配,确保只提取两个__之间的内容,不会跨块匹配

要是你后续需要替换这些格式或者做其他操作,用sub()方法也能直接用这套正则,灵活性拉满~

内容的提问来源于stack exchange,提问作者Lego490

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 12:47:34