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