在Ruby中从正则表达式获取字符串
我需要在ruby中的正则表达式中添加一个字符串,这就是我试图做的(我获取目录中的所有文件,打开它们,查找它们是否有模式,然后通过添加到已经存在的内容来修改该模式,要做到这一点,我需要实际的字符串)在Ruby中从正则表达式获取字符串,ruby,regex,Ruby,Regex,我需要在ruby中的正则表达式中添加一个字符串,这就是我试图做的(我获取目录中的所有文件,打开它们,查找它们是否有模式,然后通过添加到已经存在的内容来修改该模式,要做到这一点,我需要实际的字符串) Dir[“*”]。每个do | t文件| file=file.open(tFile,“rb”) contents=file.read 影像线=// 如果(内容=~imageLine) 把内容放在.sub!(imageLine,“一些字符串”+imageLine+“一些其他字符串”) 结束 结束 您可以
Dir[“*”]。每个do | t文件|
file=file.open(tFile,“rb”)
contents=file.read
影像线=//
如果(内容=~imageLine)
把内容放在.sub!(imageLine,“一些字符串”+imageLine+“一些其他字符串”)
结束
结束
您可以对捕获组使用sub
或gsub
:
"foo".gsub(/(o)/, '\1x')
=> "foxox"
有关更多信息,请参阅。您正在使用的
sub代码>这是在位修改器版本。虽然这有它的用途,但方法的结果不是字符串,而是指示是否做了任何事情
sub
方法更适合这种情况。如果需要替换多个匹配项,请使用gsub
在执行替换时,您可以使用占位符(如\1
)来处理捕获的部分(在正则表达式中使用括号进行捕获),也可以使用块版本来执行更多的任意操作
IMAGE_REGEXP = /<img class="myclass"(.*)\/>/
Dir["*"].each do |tFile|
File.open(tFile, "rb") do |in|
puts in.read.gsub(IMAGE_REGEXP) { |s| "some string#{s}some other string" }
end
end
IMAGE\u REGEXP=//
Dir[“*”]。每个do | t文件|
打开(tFile,“rb”)do|in|
放入.read.gsub(IMAGE|REGEXP){s|“一些字符串{s}一些其他字符串”}
结束
结束
我认为您需要使用写入权限打开文件,File.open(tFile,'rw')
并迭代文件的每一行,替换找到模式的那一行。如果正在写入,则使用写入打开。这里,放置
将进入标准输出。
IMAGE_REGEXP = /<img class="myclass"(.*)\/>/
Dir["*"].each do |tFile|
File.open(tFile, "rb") do |in|
puts in.read.gsub(IMAGE_REGEXP) { |s| "some string#{s}some other string" }
end
end