Python - 在正则表达式中使用变量

时间:2012-02-24 03:18:55

标签: python regex

我正在尝试使用正则表达式更改字符串中的宽度值。

宽度可以有多种格式,例如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 个答案:

答案 0 :(得分: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

希望这有帮助。

答案 1 :(得分:0)

试试this正则表达式:

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

匹配:

width="300px
width=300px
width:"300px
width:300px