【问题标题】:Ruby: how to match a double quote in a regexpRuby:如何匹配正则表达式中的双引号
【发布时间】:2009-10-05 13:46:01
【问题描述】:

我正在尝试使用 Ruby one 衬垫从文本文件中删除一些双引号 (") 字符,但收效甚微。

我尝试了以下方法和一些变体,但没有成功。

ruby -pe 'gsub(/\"/,"")' < myfile.txt

这给了我以下错误:

-e:1: Invalid argument - < (Errno::EINVAL)

我在 Win 机器上运行 Ruby:

ruby 1.8.6(2007-09-24 补丁级别 111)[i386-mswin32]

有什么想法吗?

【问题讨论】:

  • 需要更多数据:您使用的是 cmd shell 吗?

标签: ruby regex escaping gsub


【解决方案1】:

看起来像 cmd 引用地狱——注意单引号在 cmd shell 中是没有意义的。

ruby -pe "gsub(34.chr,'')" < filename

但这可能更好:

ruby -pe "$_.delete!(34.chr)" < filename

【讨论】:

    【解决方案2】:

    怎么样:

    ruby -e 'puts $stdin.read.gsub(34.chr,"")' <myfile.txt
    

    【讨论】:

    • 反斜杠和 cmd.exe 的某些东西播放不好。
    【解决方案3】:
    ruby -pe 'gsub(/\"/,"")' myfile.txt
    

    【讨论】:

    • 这也不起作用。我需要“
    • 抱歉,我没有得到“将输入重定向到脚本”
    • 我的意思是输入来自一个文件,并且“fepus.net/ruby1line.txt
    【解决方案4】:

    听起来问题出在外壳上。

    您的错误消息来自 Ruby,因此 Ruby 似乎正在接收 &lt; 作为参数。这意味着 shell 没有进行任何重定向。

    我手边没有 Windows 机器,所以我会仔细检查您是否首先获得了正确的重定向。第一次检查我认为&lt; myfile.txt 应该是&lt;myfile.txt

    【讨论】:

    • 这似乎不是原因。使用非特殊字符可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    相关资源
    最近更新 更多