繁体   English   中英

如何查找和替换正则表达式代码

[英]How to find and replace in a regex code

我正在尝试查找并替换正则表达式代码

<div class="gallery-image-container">
    <div jstcache="1116"
         class="gallery-image-high-res loaded"
         style="width: 396px;
                height: 264px;
                background-image: url(&quot;https://lh5.googleusercontent.com/p/AF1QipMcTfMPZj_d5iip9WKtN2SQB9Je5U4rRB0nT_t8=s396-k-no&quot;);
                background-size: 396px 264px;"
         jsan="7.gallery-image-high-res,7.loaded,5.width,5.height,5.background-image,5.background-size">
    </div>
</div>

在上面的代码中,我使用了This

(https:\/\/[^&]*)

提取此URL

https://lh5.googleusercontent.com/p/AF1QipMcTfMPZj_d5iip9WKtN2SQB9Je5U4rRB0nT_t8=s396-k-no

我使用了此正则表达式s\\d{3}来获取s396

现在我想将URL中的s396替换为s1000

现在是Stock,不知道该怎么做。

无论如何,请问所有这些都可以用一个正则表达式代码而不是多个代码完成吗?

我建议使用HTML解析器,但我知道有时是不可能的。 这是python中的一个小例子。

import re

data = '''
<div class="gallery-image-container">
    <div jstcache="1116"
         class="gallery-image-high-res loaded"
         style="width: 396px;
            height: 264px;
            background-image: url(&quot;https://lh5.googleusercontent.com/p/AF1QipMcTfMPZj_d5iip9WKtN2SQB9Je5U4rRB0nT_t8=s396-k-no&quot;);
            background-size: 396px 264px;"
         jsan="7.gallery-image-high-res,7.loaded,5.width,5.height,5.background-image,5.background-size">
    </div>
</div>
'''
match = re.search("(https?://[^&]+)", data)
url = match.group(1)
url = re.sub("s\d{3}", "s1000", url)
print(url)

他们的关键部分是正则表达式

(https?://[^&]+)

它使用否定字符类。 就是说,使用可选的s://来查找http ,然后查找所有 &您可以使用此站点使用正则表达式:

https://regex101.com/r/b0APFA/1

我敢肯定,您可以做一个聪明的1班轮嵌套正则表达式来一次查找和替换所有内容,但是如果您有几行内容,它将更容易进行故障排除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM