【发布时间】:2013-04-06 04:58:21
【问题描述】:
我需要匹配输入的文本文件字符串中的一行,然后用一个字符换行捕获的行。
例如想象一个这样的文本文件:
test
foo
test
bar
我想用gsub来输出:
XtestX
XfooX
XtestX
XbarX
我在匹配一行时遇到了麻烦。我尝试使用以 ^ 开头并以 $ 结尾的正则表达式,但它似乎不起作用?有什么想法吗?
我有一个包含以下内容的文本文件:
test
foo
test
bag
文本文件正在作为命令行参数读入。
所以我得到了(例如只是试图包装测试)
string = IO.read(ARGV[0])
string = string.gsub(/^(test)$/,'X\1X')
puts string
它输出与文本文件中完全相同的内容。
我试过了
string = string.gsub(/^(.*)$/, 'X\1X')
这个输出:
Xtest
Xfoo
Xtest
Xbar
...为什么?
好的,所以我退格了文本文件的最后一行,现在我得到了这个......
Xtest
Xfoo
Xbar
XtestX
【问题讨论】:
-
根据您的正则表达式,您只期望那些以 test 开头的行,但您想要的输出不同!
-
@UpasanaShukla 你是什么意思?我的示例代码试图用 Xs 包装测试,所以我的输出应该包含与 XtestX 相同的所有内容,但它没有。
-
查看您想要的输出,因为无论是否以 test 开头,每一行都在进行替换。不是吗?
-
ruby 1.9.3p194 这并不愚蠢!
-
@Tommy 在这行之后:
string = IO.read(ARGV[0]),你能用p打印字符串并给我们输出(即p string)吗? (我知道它应该与文件相同,但我想确定)