我有这样的文字:
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)
答案 0 :(得分:4)
您可以将re.sub()
用于此目的。
input = '''Lorem ipsum [!one] and [!two]'''
input = re.sub("\[!([^]]+)\]", '[\\1](http://example.com/\\1)', input)
\\1
是匹配([^]]+)
答案 1 :(得分:2)
您可以使用re.sub():
>>> import re
>>> s = "Lorem ipsum [!one] and [!two]"
>>> re.sub(r"\[\!(\w+)\]", r'[\1](http://example.com/\1)', s)
'Lorem ipsum [one](http://example.com/one) and [two](http://example.com/two)'
\1
是已捕获群组(\w+)
的参考。
另请参阅有关捕获群组的documentation。