从jira到标记格式的Python正则表达式文本

从jira到标记格式的Python正则表达式文本,python,regex,replace,Python,Regex,Replace,我想将粗体文本格式从Jira转换为markdown,但我遇到了列表问题。我的代码: re.sub(r“\*([^{}]+)\*”,r“***\1**”,文本) 我试图用**替换所有*,但这导致显示列表时出现问题,并将其从以下位置转到: 第一项 第二项 第三项 为此: **第一项 **第二项 **最后一项 有人知道如何解决这个问题吗?为什么不利用列表中的项目,在新行开头加上星号和空格 伪代码: 对于每一行: 如果不是,则行以星号开头: 将单星号替换为双星号 其他: 替换前导星号后面的文本 您

我想将粗体文本格式从Jira转换为markdown,但我遇到了列表问题。我的代码:

re.sub(r“\*([^{}]+)\*”,r“***\1**”,文本)
我试图用
**
替换所有
*
,但这导致显示列表时出现问题,并将其从以下位置转到:

  • 第一项
  • 第二项
  • 第三项
为此: **第一项 **第二项 **最后一项


有人知道如何解决这个问题吗?

为什么不利用列表中的项目,在新行开头加上星号和空格

伪代码:

对于每一行:
如果不是,则行以星号开头:
将单星号替换为双星号
其他:
替换前导星号后面的文本
您可以使用

重新导入
text=r'''一些文本*这里*:
*第一项
*第二项
*第三项*一些粗体文本*
还有课文的结尾
打印(关于(
r'^[^\S\n]*\*\\*([^*\r\n]*)\*',
lambda x:f'**{x.group(1)}**'如果x.group(1)else x.group(),
文本,
flags=re.M)
)

详细信息

  • ^
    -字符串的开头
  • [^\S\n]*
    -零个或多个除LF以外的空白字符
  • \*
    -a
    *
    字符
  • |
    -或
  • \*
    -a
    *
    字符
  • ([^*\r\n]*)
    -捕获组1:除
    *
    、CR和LF之外的任何零个或多个字符
  • \*
    -a
    *
    字符

lambda x:f'**{x.group(1)}**'如果x.group(1)else x.group()
替换意味着匹配被替换为
**
+组1+
**
如果组1匹配,否则,不会发生替换,整个匹配将按原样返回。

尝试
r“\*([^{}*\r\n]+)\*”
,这很有帮助,但是在尝试在列表项中使用粗体文本时仍然会导致问题。请您解释一下模式应该匹配什么?您如何描述应该发生匹配的上下文?只有在用户试图以单行形式编写粗体文本时,才会发生匹配:
*粗体文本*
Try:
re.sub(r“\*([^*{}\n]+)\*,r“***\1**”,text)