好的,通常我不會問這些問題。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的引用,換句話說就是第一對和第二對'()'括號內的內容。 –