2012-02-24 5 views
0

正規表現を使用して文字列の幅の値を変更しようとしています。Python - 正規表現で変数を使用する

幅が

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) 

現在、私が探してると、このように個別に交換する...など、(引用符なし)などwidth="500px"またはwidth:500pxまたはwidth=500pxなど複数のフォーマットを持つことができ、任意のはあります1つの正規表現を使用して文字列を:または=に置き換える方法はありますか?

EDIT

ので、上記のコードを変更:と=に応じて変更され、代わりに "="

+2

をあなたは '幅のようなものを探している?:| {3}' – fardjad

答えて

0

this正規表現を試してみてください:

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

それが一致します。

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

こんにちは、ありがとう。どのようにこれを:or =に置き換えることができますか?グループ化された – DavidL

+0

。この正規表現: '(width)(:| =)"?(\ w {3}) 'を使って文字列とマッチさせ、' $ 1 $ 2 $ 3'と置き換えてください。http://regexr.com?304b4 。 – fardjad

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

wは\ "(=)は、ありがとうございます。しかし、一致した式を:=または=に置き換えるにはどうすればよいでしょうか? – DavidL

+1

一致する区切り文字は、 ':'または '='のどちらかでグループ1に入っていますので、置換文字列に '\ 1 'マークは '\ 2'にありますが、あなたがマッチしている場合に限ります。私は実際にその部分を'(["\ ']?)'と書いていますので、グループ2引用符がない場合でも常に存在します。 – kindall