2

例如,我需要匹配输入的文本文件字符串中的一行,并用一个字符包装捕获的行。

例如想象一个这样的文本文件:

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
4

3 回答 3

2
string = "test\r\nfoo\r\ntest\r\nbar"
string = string.gsub(/^test(?=\r?\n)/, 'X\&X').delete(?\r)
puts string
于 2013-04-13T20:27:57.240 回答
0

它适用于我手机上的 Ruboto IRB。您能否制作一个独立的单行示例并发布它?不需要文件 IO。你用什么红宝石版本?

我怀疑你的程序只是有一个错字。

于 2013-04-13T20:24:31.147 回答
0

问题是由于dos行尾(\r\n),所以为了摆脱这个,有一个flip命令(在MAC中,如果我是正确的)将dos行尾转换为mac行尾(\r)。搜索它并将 dos 行结尾转换为 mac 行结尾,然后再使用该文本文件。

于 2013-04-13T20:34:18.563 回答