首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >删除所有html标记的sed命令行的分解

删除所有html标记的sed命令行的分解
EN

Stack Overflow用户
提问于 2018-06-16 04:30:47
回答 1查看 34关注 0票数 0

我已经查找了使用sed删除html标记的方法。我偶然发现了这个帖子:

Delete html tags in sed or similar

用户“无用代码”建议以下行:

代码语言:javascript
复制
sed 's/<[^>]\+>//g'

由于我是Stack Overflow的新手,因此还不允许对答案进行评论,所以我创建了这个帖子,要求您对上面的命令行进行分解。我知道"s“和"g”在代码中的作用,但是中间的部分,特别是<[^>]\+>,让我很困惑。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-16 04:52:31

[xyz]指的是任何字符x、y或z。

[^xyz]正好相反,即x、y或z以外的任何字符。

所以[^>]指的是除>之外的任何字符。

正则表达式中任何后跟+的内容都表示“其中的一个或多个”。因此,[^>]+表示一个或多个非>字符。

最后,<[^>]+>表示<后跟一个或多个非>字符,后跟>。所以基本上就是<anything>

所有这些都放在/字符之间,以标记正则表达式搜索模式的开始和结束。第2和第3个/之间的部分是任何找到的匹配项都将被替换的部分。在本例中,它是一个空字符串,因为您只想删除标签。

+前面的反斜杠是因为sed默认使用有限版本的正则表达式,您也可以通过使用sed -E来克服这一点。

所以sed -E 's/<[^>]+>//g' (注意没有反斜杠)也可以使用。

注意:您可能想知道是否也必须删除<>。严格地说,这不是一个有效的HTML标记,但是如果它出现了,你可能也想去掉它。因此,您可以使用*来代替+,这意味着没有或多个前面的字符(而不是+,这意味着一个或多个字符)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50882304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档