使用Python中的正则表达式替换单词周围的括号
我有这段文字:
Lorem ipsum [!one] and [!two]
我需要把它变成这段文字:
Lorem ipsum [one](http://example.com/one) and [two](http://example.com/two)
这段代码可以找到每个在"[!"和"]"之间的单词
import re
r = r"\[\!(\w+)\]"
text = "Lorem ipsum [!one] and [!two]"
result = re.findall(r, text)
这样我就得到了以下结果
['one', 'two']
我可以使用 .replace() 方法,但我在想,能不能用正则表达式来实现。
补充说明:
我需要先对匹配到的文本进行一些处理,然后再替换。这是基于之前答案的解决方案:
import re
def generate_url(input):
# Do extra stuff here
return "http://example.com/%s" % input
input = '''Lorem ipsum [!one] and [!two]'''
regex = "\[@([^]]+)\]"
url_generator = lambda match: "[%s](%s)" % (match.group(1), generate_url(match.group(1)))
output= re.sub(regex, url_generator, input)
相关问题:
2 个回答
4
你可以使用 re.sub() 来实现这个目的。
input = '''Lorem ipsum [!one] and [!two]'''
input = re.sub("\[!([^]]+)\]", '[\\1](http://example.com/\\1)', input)
\\1 是从正则表达式匹配到的 ([^]]+) 中捕获的部分。