【问题标题】:Python regex replace text starting and ending with specific phrasesPython 正则表达式替换以特定短语开头和结尾的文本
【发布时间】:2019-12-01 16:28:24
【问题描述】:

我想替换以<img> 开头并以</img> 结尾的文本。 我只是从正则表达式的东西开始。

我试过下面的代码。

最终结果应该是:

输入:

"New Year's Eve <img>scr=[...]</img>, New Year's Day (Observed)"

输出:

"New Year's Eve [image placeholder], New Year's Day (Observed)"

代码示例

import re
input = [
    "Independence Day (Observed)",
    "Another Christmas Eve, Christmas Day (Observed)",
    "New Year's Eve <img>scr=[...]</img>, New Year's Day (Observed)",
    "Martin Luther King, Jr. <img>scr=[...]</img> Day"
]
for holiday in input:
    print(re.sub(r'\b<img>\b', '[image placeholder]', holiday))`

【问题讨论】:

  • 你确定图片标签是这样的吗?当然,他们更有可能看起来像这样:&lt;img src="some/path/foo.jpg"&gt;...&lt;/img&gt;&lt;img src="some/path/foo.jpg" /&gt;
  • 当然,我的错,我重新输入了代码,因为我离开了我的电脑。感谢您指出明显的错字

标签: python regex python-3.x string replace


【解决方案1】:

你想替换开始和结束标记之间的所有代码:

import re
input = [
    "Independence Day (Observed)",
    "Another Christmas Eve, Christmas Day (Observed)",
    "New Year's Eve <img>scr=[...]</img>, New Year's Day (Observed)"
    "Martin Luther King, Jr. <img>scr=[...]</img> Day"
]
for holiday in input:
    print(re.sub(r'<img>.*?</img>', '[image placeholder]', holiday))

输出:

Independence Day (Observed)
Another Christmas Eve, Christmas Day (Observed)
New Year's Eve [image placeholder], New Year's Day (Observed)
Martin Luther King, Jr. [image placeholder] Day

正则表达式匹配以&lt;img&gt; 开头并以&lt;/img&gt; 结尾的文本以及介于.*? 之间的任何内容。 ? 使其非贪婪匹配,因此它将匹配到开始标签后面的第一个结束标签 - 如果同一输入文本中有多个标签,则允许它正确替换每一对标签。

【讨论】:

    猜你喜欢
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 2020-05-07
    • 2018-02-21
    • 2013-08-04
    相关资源
    最近更新 更多