gpt4 book ai didi

html - 正则表达式:选择除 img 标签以外的所有内容

转载 作者:行者123 更新时间:2023-11-28 02:15:55 25 4
gpt4 key购买 nike

我正在尝试使用正则表达式选择一些文本,同时保留所有 img 标签。

我找到了以下选择所有 img 标签的代码:

/<img[^>]+>/g

但实际上有这样的文字:

This is an untagged text.
<p>this is my paragraph text</p>
<img src="http://example.com/image.png" alt=""/>
<a href="http://example.com/">this is a link</a>

使用上面的代码将选择 img 标签

/<img[^>]+>/g #--> using this code will result in:
<img src="http://example.com/image.png" alt=""/>

但我想使用一些正则表达式来选择除图像之外的所有内容,例如:

/magical regex/g # --> results in:
This is an untagged text.
<p>this is my paragraph text</p>
<a href="http://example.com/">this is a link</a>

我还找到了这段代码:

/<(?!img)[^>]+>/g

选择除 img 之外的所有 tags。但在某些情况下,我会在标签之间添加未标记的文本或文本,因此这不适用于我的情况。 :(

有什么办法吗?抱歉,我对正则表达式真的很陌生,所以我真的花了几天时间试图让它工作,但我做不到。

提前致谢


更新:

好吧,对于那些认为我想解析它的人来说,抱歉,我不想要它,我只想选择文本。

另一件事,我没有具体使用任何语言,我使用的是 Yahoo Pipes它只提供正则表达式和一些字符串工具来完成这项工作。但它不会演化出任何编程代码。

为了更好地理解这里的正则表达式模块在雅虎管道中的工作方式:

http://pipes.yahoo.com/pipes/docs?doc=operators#Regex


更新 2

幸运的是,我能够去除 img 标签附近的文本,但是按照@Blixt 的建议逐步去除,例如:

<(?!img)[^>]+> , replace with "" #-> strips out every tag that is not img
(?s)^[^<]*(.*), replace with $1 #-> removes all the text before the img tag
(?s)^([^>]+>).*, replace with $1 #-> removed all the text after the img tag

这个问题是它只会捕获第一个 img 标签,然后我必须手动执行并捕获其他硬编码,所以我仍然不确定这是否是最佳解决方案。

最佳答案

您必须找到图像标签的正则表达式可以与替换一起使用以获得您想要的内容。

假设您使用的是 PHP:

$htmlWithoutIMG = preg_replace('/<img[^>]+>/g', '', $html);

如果您使用的是 Javascript:

var htmlWithoutIMG = html.replace(/<img[^>]+>/g, '');

这会获取您的文本,找到 <img>标记并用任何东西替换它们,即。它从文本中删除它们,留下你想要的。不记得是否<,>需要转义。

关于html - 正则表达式:选择除 img 标签以外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4358677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com