Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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
Regex Ruby look behind正则表达式错误:look behind中的模式无效_Regex_Ruby_Gsub - Fatal编程技术网

Regex Ruby look behind正则表达式错误:look behind中的模式无效

Regex Ruby look behind正则表达式错误:look behind中的模式无效,regex,ruby,gsub,Regex,Ruby,Gsub,挑战调用捕获所有字符,包括第二个“.” 例如在字符串中:文件名.EXTENSION.OTHEREXTENSIONadasd^^^ assdassds34 捕获的字符应为“.OTHEREXTENSIONadasd^^ assdassds34” 因此,我应该以“FILE_NAME.EXTENSION”结尾 我尝试过的正则表达式要么捕获第一个“.”之后的所有字符,要么抛出错误:look behind中的模式无效 出现错误的第一个示例: string = "FILE_NAME.EXTENSION.OTH

挑战调用捕获所有字符,包括第二个“.”

例如在字符串中:文件名.EXTENSION.OTHEREXTENSIONadasd^^^ assdassds34

捕获的字符应为“.OTHEREXTENSIONadasd^^ assdassds34”

因此,我应该以“FILE_NAME.EXTENSION”结尾

我尝试过的正则表达式要么捕获第一个“.”之后的所有字符,要么抛出错误:look behind中的模式无效

出现错误的第一个示例:

string = "FILE_NAME.EXTENSION.OTHEREXTENSIONadasd^^assdassds34"

string.gsub(/(?<=[.]\S+)[.]\S+/, '')
string=“FILE_NAME.EXTENSION.OTHEREXTENSIONadasd^^assdassds34”
gsub(/(?您可以使用

s = s.gsub(/\A([^.]*\.[^.]*)\..*/, '\1')
请参见和正则表达式图:

详细信息

  • \A
    -字符串的开头
  • ([^.]*\.[^.]*)
    -第1组:0+非点、a点和0+非点
  • \。
    -一个点
  • *
    -除换行符以外的任何0个或更多字符

如果您需要更多详细信息,请通过一条评论让我知道!谢谢!一个问题是“\1”基本上是说只返回组1中的匹配项?@NateDawg25
\1
是对组1中存储的值的反向引用。它是组1中捕获的子字符串,而不是我们通常说的“匹配项”在整体匹配值的意义上。
s = s.gsub(/\A([^.]*\.[^.]*)\..*/, '\1')