Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何在某个单词后从字符串中删除所有内容?_Ruby_Regex - Fatal编程技术网

Ruby 如何在某个单词后从字符串中删除所有内容?

Ruby 如何在某个单词后从字符串中删除所有内容?,ruby,regex,Ruby,Regex,所以我知道在“theword”之前把所有的东西都剪成一个字符串,你会这样做的 .gsub!(/.*?(?=theword)/im, "") 我不知道该怎么做,就是把“theword”后面的所有东西都剪成一个字符串,我想知道你能不能帮我做这个正则表达式。它应该是上面正则表达式的一些修改,但我还没有弄明白。谢谢 以下是你如何捕捉单词后面的所有内容 基本上,我们找到了模式,并拒绝使用?:non-capture修饰符捕获它,但我们捕获了它之后的所有内容 /(?:.*?theword)(.*)/gm

所以我知道在“theword”之前把所有的东西都剪成一个字符串,你会这样做的

  .gsub!(/.*?(?=theword)/im, "")

我不知道该怎么做,就是把“theword”后面的所有东西都剪成一个字符串,我想知道你能不能帮我做这个正则表达式。它应该是上面正则表达式的一些修改,但我还没有弄明白。谢谢

以下是你如何捕捉单词后面的所有内容

基本上,我们找到了模式,并拒绝使用?:non-capture修饰符捕获它,但我们捕获了它之后的所有内容

/(?:.*?theword)(.*)/gm

要删除“单词”之前的所有内容,您使用了正向前瞻。类似地,要删除“theword”之后的所有内容,可以使用积极的lookback

.gsub!(/(?<=theword).*?/im, "")
.gsub!(/(?我知道“剪切”是指将字符串分成两部分。通过传递等于2的limit参数,可以使用a:

s.split(/theword/i, 2)

如果出于某种原因,您需要使用删除代码,我建议使用
sub
(因为将有一个搜索和替换操作):

  • 删除单词后的所有内容,包括单词:
    .sub!(/theword.*/mi,”)
    ()
  • 删除单词后面的所有内容,不包括单词:
    .sub!(/(单词)。*/mi,“\\1”)
    ()

包括单词:
/theword.*/mi
。不包括单词:。注意,
sub
更合适,因为您计划执行一次搜索和替换操作。谢谢,效果很好。我发布了一个带有更多选项的答案。