在Python中转换字符串的一部分

时间:2014-09-13 08:16:27

标签: python string

我们说我有以下字符串:

MARKDOWN: [This link](http://example.net/)

我要转换为

MARKDOWN: [link=http://example.net]This link[/link]

这方面的最佳方法是什么,我该怎么做,注意一行中可以有多个链接。

提前致谢

2 个答案:

答案 0 :(得分:2)

您可以通过re.sub函数

执行此操作
>>> import re
>>> s = "MARKDOWN: [This link](http://example.net/)"
>>> m = re.sub(r'\[([^]]*)\]\((.*?)\/\)', r'[link=\2]\1[/link]', s)
>>> m
'MARKDOWN: [link=http://example.net]This link[/link]'

排除第二组捕获/)。这样您就不会在链接值中获得最后/。(即http://example.net)。此外,您可以将最后一个\/设为可选,因为某些链接最后可能包含/,也可能不包含>>> m = re.sub(r'\[([^]]*)\]\((.*?)\/?\)', r'[link=\2]\1[/link]', s) 。因此正则表达式将是,

{{1}}

DEMO

答案 1 :(得分:0)

re.sub(r"\[(.*?)\]\((.*?)\/?\)", r"[link=\2]\1[/link]",
    "MARKDOWN: [This link](http://example.net/) and this [this](www.google.com)")

# output:
'MARKDOWN: [link=http://example.net]This link[/link] and
this [link=www.google.com]this[/link]'