好的,通常我不会问这些问题。Python:正则表达式替换
使用re.sub查找和替换普通字符串很简单,但替换部分(而不是匹配部分)中的正则表达式如何工作?
特别是,参照Brian Okken's web-page这个说法正是为了解释这一点,提供代码来复制他曾在Pearl使用过的相同类型的功能,但一直在努力开发python。
import fileinput
import re
for line in fileinput.input():
line = re.sub(r'\* \[(.*)\]\(#(.*)\)', r'<h2 id="\2">\1</h2>', line.rstrip())
print(line)
此子是为了匹配
* [the label](#the_anchor)
与
<h2 id="the_anchor">the label</h2>
它的工作原理取代它:但如何脚本确切地知道什么标签和锚是谁?据推测,\ 1和\ 2旨在匹配所需的文本,但脚本如何知道这一点,而不是认为,主导*指的是\ 1?
由于括号。替换中的'\ 1'是指与正则表达式中第一对parens(即第一个“(*)”)匹配的任何内容。 – drdaeman
'\ 1','\ 2'是要替换的模式的第一个和第二个匹配组。组是圆括号中模式的一部分。 – schwobaseggl
'\(GroupReference)'是为了引用匹配文本中的组。如果你不知道什么群体,我建议你看看这些群体。在这种情况下,'\ 1'和'\ 2'分别是对组1和2的引用,换句话说就是第一对和第二对'()'括号内的内容。 –