在HTML标签之间获取内容特殊字符含义?

时间:2017-09-15 10:28:45

标签: html regex bash grep character

在有人将此标记为重复之前,我想说的是我看过这样的帖子: HTML Tags

可悲的是,那里的解决方案并不适合我。

在一个非常有用的评论之后,我现在意识到我最初的问题不是在HTML标签之间获取文本,而是使用非ASCII字符的greps。因此,这个问题似乎与this one重复。感谢所有有用的评论,抱歉复制,我老实说用了一个小时才发布这里!

我认为角色" '"是问题,因为grep -E -o'()。*'只匹配此角色。我不确定为什么会这样,并且会对此有任何帮助或暗示。

问题如下:我有一个文件,例如看起来像这样,我想在强标签之间提取文本:

> <p>Here is something</p> <ul>   <li>
>     <p><strong>Here is something else</strong> And I keep typing here

强者总是在同一条线上,这应该让它更容易,至少我是这么认为的。

我自己的想法导致我

grep -E -o '\<strong\>.*\<\/strong\>' test.txt

直到我意识到\&lt;只查找一个单词的开头(我不确定&lt;有特殊含义所以我想逃避它)。

然后我继续尝试grep -E -o '(<strong>).*(<\/strong>),令人惊讶的是,它适用于我上面给你的测试文件。

现在,事实是,原始文件在强标签之间有书名,书名往往包含撇号,我认为它们搞砸了。 让我们看看另一个示例文件:

> <p>Here is something</p> <ul>   <li>
> <p><strong>That`s a stupid</strong> And I keep typing here <p>>
> <strong>Complications: A Surgeon’s Notes on an Imperfect Science</strong> ?
> blablabla <p><strong>Another test, with this kind of ' apostrophe</strong> bla bla

现在使用grep -E -o '(<strong>).*(<\/strong>)'之前的grep只返回第一个和第三个匹配:

> <strong>That`s a stupid</strong> 
> <strong>Another test, with this kind of ' apostroph</strong>

我不明白为什么

 "<strong>Complications: A Surgeon’s Notes on an Imperfect Science</strong>"

没有匹配。 我很清楚这个角色&#34; '&#34;是问题,因为grep -E -o '(<strong>).*'只匹配&#34;并发症:外科医生&#34;。 任何关于为什么角色的想法&#34; '&#34;会有什么问题吗?我注意到当打印文件cat file.txt时,该字符也显示不正确。

另外,在类似的说明中:现在grep仍在返回标签。如何禁用此功能?我认为我只能在那里使用一个论点(这就是我在代码中包含括号的原因),但我似乎无法找到它。

谢谢大家,感谢任何帮助! 我也很抱歉格式错误,我认为示例文件中的HTML标签溢出了问题......

0 个答案:

没有答案