2012-02-24 19 views
0

我想使用正則表達式來更改字符串中的寬度值。Python - 在正則表達式中使用變量

寬度可以有多種格式,如width="500px"width:500pxwidth=500px(不帶引號),等等。

目前,我在尋找和單獨更換喜歡這個

p = re.compile('width="\w{3}') 
embed_url = p.sub('width="555', embed_url) 

# width:"555 
p = re.compile('width:"\w{3}') 
embed_url = p.sub('width:"555', embed_url) 

有什麼如何使用一個正則表達式並相應地替換字符串:=

編輯

改變了上面的代碼,所以:和=相應改變,而不是用「=」

+2

你在找像'寬度(:| =)「\ w {3}' – fardjad 2012-02-24 03:21:52

回答

0

嘗試this正則表達式:

width(:|=)"?\w{3} 

它匹配:

 
width="300px 
width=300px 
width:"300px 
width:300px 
+0

嗨,謝謝。我該如何將它替換爲:或=相應地? – DavidL 2012-02-24 05:48:31

+0

分組;使用這個正則表達式:'(width)(:| =)「?(\ w {3})'來匹配字符串,然後將其替換爲:'$ 1 $ 2 $ 3'。看到這裏http://regexr.com?304b4 。 – fardjad 2012-02-24 11:27:57

0

您可以使用|更換所有的人都和分組如下:

>>> p = re.compile('width(:|=)"\w{3}') 
>>> print(p.sub('width="555', 'width="500px"')) 
width="555px" 
>>> print(p.sub('width="555', 'width:"500px"')) 
width="555px" 

如果你有一組引號/撇號,你可以這樣做:

>>> p = re.compile('width(:|=)("|\')\w{3}') 
>>> print(p.sub('width="555', 'width:"500px"')) 
width="555px" 
>>> print(p.sub('width="555', 'width:\'500px"')) 
width="555px" 
>>> print(p.sub('width="555', 'width="500px"')) 
width="555px" 
>>> print(p.sub('width="555', 'width=\'500px"')) 
width="555px" 

添加?將使先前元素可選:

>>> p = re.compile('width(:|=)("|\')?\w{3}') 
>>> print(p.sub('width="555', 'width="500px"')) 
width="555px" 
>>> print(p.sub('width="555', 'width=500px')) 
width="555px 

希望這有助於。

+0

謝謝?。但是,如何用下列符號替換匹配的表達式:or = – DavidL 2012-02-24 05:47:20

+1

匹配的分隔符,可以是':'或'=',位於組1中,因此可以用'\ 1'替換它到替換字符串中。標記在'\ 2'中,但是隻有當你有一個匹配時,我纔會將這個部分寫成'([「\']?),所以第2組即使沒有引號,也會一直存在。 – kindall 2012-02-24 06:08:54

相關問題