Мне нужно проверить следующие совпадения в строке:
"SIN ", " SIN", " SIN ", "SX ", " SX", " SX ", "RIC ", " RIC", " RIC ", "OK ", " OK", " OK "
, но заменить при совпадении этих токенов только подстроки
"SIN", "SX", "RIC", "OK"
другим текстом, оставляя пробелы .
Каждая строка должна рассматриваться как отдельная входная строка.
Подробно, мне нужно:
заменить на "SINSC"
подстроки "SIN"
и "SX"
внутри токенов "SIN ", " SIN", " SIN ", "SX ", " SX", " SX "
каждый раз, когда сопоставляется один из них
заменять на "RICOM"
подстроку "RIC"
внутри токенов "RIC ", " RIC", " RIC "
каждый раз, когда один из них совпадают
(совпадения для "OK ", " OK", " OK "
предназначены для другой цели, а не для замены, они мне нужны потом в коде)
Я написал следующее выражение для первой фильтрации:
(^|\s+)(SIN|SX|RIC|OK)(\s+|$)
, и оно, кажется, работает (я рассмотрел случай нескольких пробелов до и после). Я пробовал это в следующем тексте:
(вы можете увидеть демо на: https://regex101.com/r/vIZCGW/2)
16M2 - SIN - 49.000 KM - SENS - A/C - n.d. - FROM: - MATRIC.: n.d. - GEAR: n.d. - COD.PROD.RIC.: n.d. - NR.PLATE:
14I2 - OK - 20.000 KM - A/C - n.d. - FROM: - MATRIC.: n.d. - GEAR: n.d. - COD.PROD.RIC.: n.d. - NR.PLATE:
11A0 - SIN - 55.000 KM - SQUARE - SENS - A/C
16H0 - n.d. - n.d. - FROM: - MATRIC.: n.d. - GEAR: n.d._n.d. marce - COD.PROD.RIC.: n.d. - NR.PLATE:
14N1 - SIN - n.d. - FROM: - MATRIC.: n.d. - GEAR: n.d._n.d. marce - COD.PROD.RIC.: n.d. - NR.PLATE: - STEEL
16D2 - SIN - n.d. - FROM: - MATRIC.: n.d. - GEAR: n.d._n.d. marce - COD.PROD.RIC.: n.d. - NR.PLATE:
SX 100000 KM 15K2
SIN - 15D1
16P0 - OK - n.d. - FROM: - MATRIC.: n.d. - GEAR: n.d._n.d. marce - COD.PROD.RIC.: n.d. - NR.PLATE:
16H0 - SIN - n.d. - FROM: - MATRIC.: n.d. - GEAR: n.d._n.d. marce - COD.PROD.RIC.: n.d. - NR.PLATE:
16I1 SIN
14K1 - SIN - n.d. - FROM: - MATRIC.: n.d. - GEAR: n.d._n.d. marce - COD.PROD.RIC.: n.d. - NR.PLATE:
SX 14E2
SX 16D1 NO TURBO
SX 110000 KM 15M1
16O2 - SIN
15J1 - SIN
16L1 SIN DAMAGED
16P2 - SIN - DAMAGED
SX 15E2
SX 9D2
SIN - 130.000 KM - 16J1
OK 13A0
SX 16M0
OK 11A1
OK 12V1
SX 105CV 15P1
OK 105CV 15O2
14A2 - SIN
Мои вопросы в основном 2:
Как может быть код замены регулярного выражения?
Почему в демоверсии на https://regex101.com/r/vIZCGW/2 некоторые строки подсвечены синий после конца строки, а остальные нет?
Спасибо!