Ruby on rails 带引号的ruby正则表达式
我试图为需要替换的字符串部分传递多个正则表达式参数。下面是字符串:Ruby on rails 带引号的ruby正则表达式,ruby-on-rails,ruby,regex,Ruby On Rails,Ruby,Regex,我试图为需要替换的字符串部分传递多个正则表达式参数。下面是字符串: str = "stands in hall "Let's go get to first period everyone" Students continue moving to seats." 以下是所需的字符串: str = "stands in hall "Let's go get to first period everyone" Students continue
str = "stands in hall "Let's go get to first period everyone" Students continue moving to seats."
以下是所需的字符串:
str = "stands in hall "Let's go get to first period everyone" Students continue moving to seats."
这就是我所尝试的:
str.gsub(/'|"/, "'" => "\'", """ => "\"")
这就是我得到的:
"stands in hall \"Let's go get to first period everyone\" Students continue moving to seats."
如何在使用gsub发送两个正则表达式参数时获取引号?这是一个HTML无法回避的问题
require 'cgi'
CGI.unescape_html(str)
这给了你正确的答案。根据我对这个问题的评论:
您的更新版本是正确的。斜杠出现在最后一行代码中的唯一原因是它是一个字符串,这样您就不会错误地认为第一个斜杠用于终止字符串。尝试分配输出并打印它:
str1 = str.gsub(/'|"/, "'" => "\'", """ => "\"")
puts str1
当使用put
打印str1
时,您将看到斜杠消失了
不同之处在于,irb中的自动评估变量(我假设您正在执行此示例代码)会自动调用
inspect
方法,对于字符串变量,该方法显示整个字符串。因为我不理解不可回避的字符,所以我找到了另一种解决方案,可能是“轨道”
你能用
我的最终解决方案是这样,而不是凌乱的正则表达式,需要CGI
在替换哈希中,您忘记了
'
后面的分号。@casimimirithippolyte谢谢,我现在用撇号得到单词Let's,但我仍然得到反斜杠。当我取出反斜杠并执行此操作时,“”=>“”“
irb渲染中没有任何内容。我将对上面的内容进行编辑,以防止进一步混淆,因为您的更新版本是正确的。斜杠出现在最后一行代码中的唯一原因是它是一个字符串,这样您就不会错误地认为第一个斜杠用于终止字符串。请尝试设置str1=str.gsub(/&';|“/,”';“=>”、“=>”\”),然后执行放置str1
,您将看到斜杠不见了。哦,感谢@mralexlau的澄清!我不知道默认情况下它会打印转义序列,但在视图中会被忽略一次。没问题,区别在于irb中的自动评估变量(这就是我假设您正在执行此示例代码所做的)自动调用inspect
方法,该方法对于字符串变量显示整个字符串。这是一个更好的解决方案,因为正则表达式非常低效,我会使用此解决方案,但我不确定如何从我创建的循环中传递字符串“我在我的视图中运行,看起来像这样的
,在本例中,描述是字符串。我将尝试修补此解决方案。您没有给任何人任何线索表明这是Rails。下次您可能想标记它并在问题中提及它。