RT
我想实现一个用正则将MD替换成Discuz论坛码的功能,但是粗体斜体这里抓瞎了……
比如有这样一句话:
_斜体1_
*斜体2*
**粗体1**
__粗体2__
这也是__粗体2__的
如果遇到__粗体__、_斜体_还有___粗斜体___在同一行该怎么办?
我本来是想先匹配斜体,我这么写的:
if __name__ == '__main__':
content = readfile("readme.md") #readfile这里直接理解成有个函数处理打开文件并返回所有内容
for line in content:
result = re.search(r'_[^_].*[^_]_',line)
if result:
print("Find!",result.group())
匹配的结果是:
Find! _斜体1_
Find! _粗体2_
Find! _粗体2_
Find! _粗体__、_斜体_还有___粗斜体_
这和事先说好了的不一样啊……
请问遇到这种混合的文本我该怎么找到目标?
另外,我用sub替换的时候发现内容也被替换走了……
res = re.sub(r'_[^_].*[^_]_','<i>.*</i>',line)
print(res)
结果是:
Find! _斜体1_ RE_MOD=> <i>.*</i>
Find! _粗体2_ RE_MOD=> _<i>.*</i>_
Find! _粗体2_ RE_MOD=> 这也是_<i>.*</i>_的
Find! _粗体__、_斜体_还有___粗斜体_ RE_MOD=> 如果遇到_<i>.*</i>__在同一行该怎么办?
请问怎么保留不想替换的正文内容?
方法有挺多的呀, 如果你嫌麻烦, 就直接将
_
全部替换成*, 但这难免会有替换错的地方, 或许可以考虑下面的方法: