Ruby 正则表达式删除HTML标记时出现问题

Ruby 正则表达式删除HTML标记时出现问题,ruby,regex,string,encoding,Ruby,Regex,String,Encoding,在我的Ruby应用程序中,我使用以下方法和正则表达式从字符串中删除所有HTML标记: str.gsub(/<\/?[^>]*>/,"") str.gsub(/]*>/,“”) 这个正则表达式实现了我所期望的一切,只是它将所有引号转换为“ 所有单引号均改为” 在将混乱的代码转换回正确的字符方面,我缺少的明显的东西是什么 Edit:无论是否使用正则表达式,问题都会出现,因此很明显我的问题与正则表达式无关。我现在的问题是如何处理这个格式错误并更正它。谢谢您可

在我的Ruby应用程序中,我使用以下方法和正则表达式从字符串中删除所有HTML标记:

str.gsub(/<\/?[^>]*>/,"")
str.gsub(/]*>/,“”)
这个正则表达式实现了我所期望的一切,只是它将所有引号转换为

所有单引号均改为

在将混乱的代码转换回正确的字符方面,我缺少的明显的东西是什么


Edit:无论是否使用正则表达式,问题都会出现,因此很明显我的问题与正则表达式无关。我现在的问题是如何处理这个格式错误并更正它。谢谢

您可以使用多通道系统来获得所需的结果


运行正则表达式后,运行表达式以转换&8220转换为引号,另一个转换为&8221到单引号。

当您看到以下内容时,您会遇到更多麻烦:

<doohickey name="<foobar>">
gsub(/<[^<>]*>/, "")

您将需要应用以下内容:

<doohickey name="<foobar>">
gsub(/<[^<>]*>/, "")
gsub(/,“”)
…只要模式匹配

这个正则表达式的作用是 我所期待的一切,除了它 使所有引号 转化为“和所有” 将单引号更改为“

这听起来不像RegExp会这么做。你确定以前不一样吗

有关此问题的信息,请参见此问题,它得到了一个极好的答案:

我在字符更改方面遇到了类似的问题,这是在我的代码通过另一个强制UTF-8编码的模块时发生的,当它返回时,我手上有一个不同的文件(slurped行数组)

在执行正则表达式替换后使用CGI::unescapeHTML:

CGI::unescapeHTML(str.gsub(/<\/?[^>]*>/,""))
而unescapethtml将完成此任务:

2 + 3 < 6
2+3<6

天哪,你说得对。我在添加正则表达式后注意到了这一点,但对字符的影响会以任何方式发生。我只是没有注意到,因为它不太明显。所以我的问题变成了:我该如何修复这种格式?你是否在使用某种“引用美化器”?除非你的意思是OP应该准备好处理虚假/无效的HTML,否则你错了。此表单永远不会以正确的HTML显示。
2 + 3 < 6