regex - 如何用特殊字符替换字符串中的多个字符

标签 regex ruby

我有一个几乎与“Ruby gsub multiple characters in string”相同的问题。

但是,我的字符串包含特殊字符:

a = "<p>text</p> <strong>bold</strong> and <em>italic</em>"

使用 /\w+/ 对我不起作用。 我尝试了许多不同的组合,但没有成功。 我应该在下面输入什么 RegEx 匹配项才能使其正常工作?我想替换字符串中任何位置的匹配项。

顺便说一句,我正在使用 Rails。

我想要的匹配项是:

a.gsub({{WHAT REGEX EXP?}},
  "\r\n" => "",
  "<p>" => "",
  "</p>" => "\n\n",
  "<br />" => "\n",
  "<strong>" => "*",
  "</strong>" => "*",
  "<em>" => "_",
  "</em>" => "_",
  "<s>" => "~",
  "</s>" => "~",
  "<blockquote>" => ">",
  "</blockquote>" => ">",
  "&" => "&amp;",
  "<" => "&lt;",
  ">" => "&gt;"
)

最佳答案

#gsub 有效:

replacements = {
  "\r\n" => "",
  "<p>" => "",
  "</p>" => "\n\n",
  "<br />" => "\n",
  "<strong>" => "*",
  "</strong>" => "*",
  "<em>" => "_",
  "</em>" => "_",
  "<s>" => "~",
  "</s>" => "~",
  "<blockquote>" => ">",
  "</blockquote>" => ">",
  "&" => "&amp;",
  "<" => "&lt;",
  ">" => "&gt;"
}

a = "<p>text</p> <strong>bold</strong> and <em>italic</em>"

replacements.each do |find, replace|
  a.gsub!(find, replace)
end

a # => "text\n\n *bold* and _italic_"

关于regex - 如何用特殊字符替换字符串中的多个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57226735/

相关文章:

ruby - 从顶层捕获异常

javascript - 如何在TinyMce编辑器中将双引号(")更改为"?

java - 在java正则表达式中验证价格

Python 正则表达式删除\n

PHP Regex - 使用逗号分隔符拆分字符串,忽略标签之间的逗号

Javascript Regex 忽略特定捕获组的大小写

ruby - 什么决定了 gem 的安装位置?

arrays - 二维数组变换

python - re.findall 不匹配所有匹配项

css - Rails `button_to` CSS 样式不起作用