我需要匹配输入的文本文件字符串中的一行,并将该捕获的行包裹在一个字符中.
例如,想象一个文本文件:
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
解决方法
如果你想匹配每一行,那么
gsub(/^.*$/,'X\&X')
诀窍.如果您只想匹配某些行,则将.*替换为您需要的任何内容.
更新:
用我的替换你的gsub:
string = IO.read(ARGV[0]) string = string.gsub(/^.*$/,'X\&X') puts string
我明白了:
$gsub.rb testfile XtestX XfooX XtestX XbarX
更新2:
根据@CodeGnome,您可以尝试添加chomp:
IO.readlines(ARGV[0]).each do |line| puts "X#{line.chomp}X" end
这对我来说同样有效.我对正则表达式中的^和$的理解是没有必要进行咀嚼,但也许我错了.