首页 > 解决方案 > 使用正则表达式从未格式化的字符串中提取某种单词

问题描述

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

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

我的解决方案:

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

我需要为模型提取普锐斯,但我需要一个可以匹配任何类型模型的通用模式匹配,即凯美瑞、altima、嘉年华等,具体取决于文件包含的内容。我尝试了很多方法,但没有任何效果。

标签: rubyregex

解决方案


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

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)


推荐阅读