Ruby 在某些行的字母之间插入符号

Ruby 在某些行的字母之间插入符号,ruby,regex,Ruby,Regex,我在操纵文本。我想在每一行的大写字母之间加一个点,除了以单词name开头的行。例如: right VGS flat DASabcdf foot foobar asdfsadf. ASDFSADF name Lorem ipsum dolor. ASDF ASDF 应该成为 right V.G.S flat D.A.Sabcdf foot foobar asdfsadf. A.S.D.F.S.A.D.F name Lorem ipsum dolor. ASDF A.S.D.F 我尝试了li

我在操纵文本。我想在每一行的大写字母之间加一个点,除了以单词
name
开头的行。例如:

right VGS
flat DASabcdf
foot
foobar asdfsadf. ASDFSADF
name Lorem ipsum dolor.  ASDF
ASDF
应该成为

right V.G.S
flat D.A.Sabcdf
foot
foobar asdfsadf. A.S.D.F.S.A.D.F
name Lorem ipsum dolor.  ASDF
A.S.D.F

我尝试了
line.gsub(/(?=[A-Z])(?
^name\b.*(*F)跳过)(
^name\b.*(*F)跳过)(*F)|(?我建议在多行字符串中循环所有行,并在开头测试单词
name
,只修改通过测试的行:

output = ""
str.each_line do |line|
    if !line.start_with?("name")
        output += line.gsub(/(?=[A-Z])(?<=[A-Z])/, ".")
    else
        output += line
    end
end
output=“”
str.每条线都有一条线|
如果!行。以?(“名称”)开头

output+=line.gsub(/(?=[A-Z])(?我建议循环多行字符串中的所有行,并在开头测试单词
name
,只修改通过测试的行:

output = ""
str.each_line do |line|
    if !line.start_with?("name")
        output += line.gsub(/(?=[A-Z])(?<=[A-Z])/, ".")
    else
        output += line
    end
end
output=“”
str.每条线都有一条线|
如果!行。以?(“名称”)开头

output+=line.gsub(/(?=[A-Z])(?让我们首先创建一个输入文件:

str = <<_
right VGS
flat DASabcdf
foot
foobar asdfsadf. ASDFSADF
name Lorem ipsum dolor.  ASDF
ASDF
_

FNameIn =  'text_in'
FNameOut = 'text_out'
IO.write(FNameIn, str)
让我们确认一下:

puts IO.read(FNameOut)
  #=> right V.G.S
  #   flat D.A.Sabcdf
  #   foot
  #   foobar asdfsadf A.S.D.F.S.A.D.F
  #   name Lorem ipsum dolor.  ASDF
  #   A.S.D.F

让我们首先创建一个输入文件:

str = <<_
right VGS
flat DASabcdf
foot
foobar asdfsadf. ASDFSADF
name Lorem ipsum dolor.  ASDF
ASDF
_

FNameIn =  'text_in'
FNameOut = 'text_out'
IO.write(FNameIn, str)
让我们确认一下:

puts IO.read(FNameOut)
  #=> right V.G.S
  #   flat D.A.Sabcdf
  #   foot
  #   foobar asdfsadf A.S.D.F.S.A.D.F
  #   name Lorem ipsum dolor.  ASDF
  #   A.S.D.F

谢谢,但在您的演示中,正则表达式适用于PHP,但我使用的是Ruby。为了使此代码有效,必须在
*SKIP
*F
前面加空格。我现在使用此
^name\b.*(*SKIP)(*F)|(?谢谢,但在您的演示中,正则表达式适用于PHP,但我使用的是Ruby。为了使此代码有效,必须在
*SKIP
*F
前面加空格。我现在使用此
^name\b.*(*SKIP)(*F)|(?问题不清楚。删除
asdfsadf
之后第四行的句点的逻辑是什么?没有必要删除第四行的点。我使用
asdfsadf
之后的点只是为了显示所有可能的情况。让我直截了当地说:您有一个Ruby标记,没有PHP标记,但您选择了一个rks使用PHP,但不使用Ruby。我遗漏了什么吗?很抱歉,第4行遗漏了句点。我编辑了Qesti。问题不清楚。删除
asdfsadf
之后第4行句点的逻辑是什么?没有必要删除第4行中的点。我使用
asdfsadf
之后的句点只是为了显示所有可能的情况。让我直截了当地说:你有一个Ruby标记,没有PHP标记,但是你选择了一个与PHP一起使用但不与Ruby一起使用的最佳答案。我遗漏了什么吗?很抱歉错过了第四行中的一段。我编辑了我的Qestion也许你可以用嵌套的
gsub
@sawa做得稍微简单一点:也许,我只是想说明多行输入可以可以逐行读取,这样OP regex就可以使用自己的正则表达式而不需要修改。也许你可以使用嵌套的
gsub
@sawa来做得稍微简单一点:也许,我只是想说明多行输入可以逐行读取,这样OP regex就可以使用自己的正则表达式而不需要修改。