使用正则表达式从未格式化的字符串中提取某种单词

时间:2018-11-26 00:42:46

标签: ruby regex

给定的字符串在.txt文件中,该文件中还有其他类似的行,但格式不同。

line = "39km,Sedan,Manual,4738B,AWD,Used,5.5L/100km,Toyota,prius,SE,{AC, Heated Seats, Heated Mirrors, Keyless Entry},2010"
  • 类型:{Sedan,coupe,掀背车,车站,SUV}
  • 变速箱:{自动,手动,继电}
  • 库存:字母和数字的组合不以“ km”传动系{FWD,RWD,AWD}结尾
  • 状态:{二手,全新}
  • 燃油经济性类似于:5.5升/ 100公里
  • format car_maker:{本田,丰田,奔驰,宝马,雷克萨斯}
  • 型号:与该表中其他任何条件都不匹配的任何文本
  • 年份:任何一年
  • 修剪:任意两个字母的缩写
  • set_of_features:括号内的任何特征集

我的解决方案:

model = /[^ #{carmaker}.to_s#{drivetrain}.to_s#{stock}.to_s#{year}.to_s#{trim}.to_s#{setOffeatures}.to_s#{fueleconomy}.to_s#{type}.to_s#{transmission}.to_s#{km}.to_s]/.match(line)
puts model returns
u 
x 
w

我需要提取模型的prius,但是我需要一个通用的模式匹配,可以匹配任何类型的模型,即camry,altima,festa等,具体取决于文件包含的内容。 我尝试了很多方法,但没有任何效果。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码段执行此操作。

const filterString = (file, string) => {
    let result = file.split(',').filter(word => word !== string).join(',')
    return result
}

// In your case you would read this in from the file system
// Using Node it would be the fs library, fs.readFileSync(path, utf8)

https://nodejs.org/dist/latest-v10.x/docs/api/fs.html#fs_fs_readfilesync_path_options

let file = `39km,Sedan,Manual,4738B,AWD,Used,5.5L/100km,Toyota,prius,SE,{AC, Heated Seats, Heated Mirrors, Keyless Entry},2010
39km,Sedan,Manual,4738B,AWD,Used,5.5L/100km,Toyota,prius,SE,{AC, Heated Seats, Heated Mirrors, Keyless Entry},2010
39km,Sedan,Manual,4738B,AWD,Used,5.5L/100km,Toyota,prius,SE,{AC, Heated Seats, Heated Mirrors, Keyless Entry},2010
39km,Sedan,Manual,4738B,AWD,Used,5.5L/100km,Toyota,prius,SE,{AC, Heated Seats, Heated Mirrors, Keyless Entry},2010
39km,Sedan,Manual,4738B,AWD,Used,5.5L/100km,Toyota,prius,SE,{AC, Heated Seats, Heated Mirrors, Keyless Entry},2010
39km,Sedan,Manual,4738B,AWD,Used,5.5L/100km,Toyota,prius,SE,{AC, Heated Seats, Heated Mirrors, Keyless Entry},2010
39km,Sedan,Manual,4738B,AWD,Used,5.5L/100km,Toyota,prius,SE,{AC, Heated Seats, Heated Mirrors, Keyless Entry},2010
39km,Sedan,Manual,4738B,AWD,Used,5.5L/100km,Toyota,prius,SE,{AC, Heated Seats, Heated Mirrors, Keyless Entry},2010
39km,Sedan,Manual,4738B,AWD,Used,5.5L/100km,Toyota,prius,SE,{AC, Heated Seats, Heated Mirrors, Keyless Entry},2010
`

let result = filterString(file, 'prius')
console.log(file, result)