【发布时间】:2017-12-31 14:45:26
【问题描述】:
我有一个我正在尝试清理的 CSV 文件,其中一部分是删除某些值中的 HTML 标记。我遇到了这个解决方案:sed -e 's/<[^>]*>//g' file.html 来自这个thread。
在尝试之前,我使用RegExr 测试了正则表达式 (/<[^>]*>/g)。我使用以下作为我的文本示例:
<asd>
< asd >
< asdsad
adsad >
在 RegExr 上,所有三个标签都匹配,但是,当我使用 sed 命令删除标签时,第三个标签仍然存在,即我只剩下:
< asdsad
adsad >
我还需要能够删除多行标签,因为我试图清理的 CSV 中的许多标签都具有带引号的属性,例如 class="some-class-name",而这些引号与 CSV 格式相混淆。
我也尝试过 Perl 命令,因为 Perl 应该具有更好的多行处理能力。我试过perl -pe 's/<[^>]*>//g' file,但结果和sed一样。
编辑:为了解决可能重复的问题,我的问题是基于为什么一个正则表达式引擎 (RegExr) 捕获的实体与另一个 (sed 和 Perl) 不同的实体以及如何让其他引擎显示第一个结果。 possible duplicate 的回答恰好解决了我的问题,尽管问题来自不同(但相似)的地方。
【问题讨论】: