Ruby在正则表达式错误后面看:后面的模式无效

时间:2019-06-20 09:22:55

标签: regex ruby gsub

挑战要求捕获所有字符,包括第二个“。”。

字符串中的EG:FILE_NAME.EXTENSION.OTHEREXTENSIONadasd ^^ assdassds34

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

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

我尝试过的正则表达式捕获第一个“。”之后的所有字符。或引发错误:后向模式无效

第一个出现错误的示例:

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

string.gsub(/(?<=[.]\S+)[.]\S+/, '')

第二个示例错误地捕获了'.EXTENSION.OTHEREXTENSIONadasd ^^ assdassds34':

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

string.gsub(/(?<=[.])\S*?[.]\S*/, '')

1 个答案:

答案 0 :(得分:1)

您可以使用

s = s.gsub(/\A([^.]*\.[^.]*)\..*/, '\1')

请参见regex demo和正则表达式图:

enter image description here

详细信息

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