Извлечение определенного вида слова из неформатированной строки с помощью регулярных выражений - PullRequest
0 голосов
/ 26 ноября 2018

Данная строка находится внутри файла .txt, где есть другие похожие строки этого формата, но другие.

line = "39km,Sedan,Manual,4738B,AWD,Used,5.5L/100km,Toyota,prius,SE,{AC, Heated Seats, Heated Mirrors, Keyless Entry},2010"
  • Тип: {седан, купе, хэтчбек, станция, внедорожник}
  • Коробка передач: {Авто, механическая коробка передач, стептроник}
  • сток: комбинация букв и цифр, НЕ заканчивающихся на «км». Трансмиссия {FWD, RWD, AWD}
  • Статус: {Б / у, новое}
  • Экономия топлива Аналогично: 5,5 л / 100 км
  • формат car_maker: {Honda, Toyota, Mercedes, BMW, Lexus}
  • Модель: любой текст, которыйне соответствует ни одному из других критериев в этой таблице
  • Год: Любой год
  • Обрезать: любые две буквы акроним
  • 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, Fiesta и т. Д.в зависимости от того, что файл содержит.Я пробовал много способов, но ничего не работает.

1 Ответ

0 голосов
/ 26 ноября 2018

Вы можете сделать это, используя приведенный ниже фрагмент кода.

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...