Как сопоставить весь текст после группы захвата регулярного выражения, но только до следующего повторного совпадения? - PullRequest
1 голос
/ 05 августа 2020

У меня есть какой-то неправильный текст, который мне нужно преобразовать в словарь python:

S5=test 3,300 Plus,S6=test 2 7,999-1,900,S7=test 3,899-1,500,S8=test 4,599-1,300,S9=Test 5-1,399,

Я хочу захватить все до знака = как ключ и все остальное после знак =, но перед следующий ключ как значение .

Это то, что у меня есть в python, но похоже, что он не работает для случаев с несколькими , запятыми:

(\w*)=+((?<==).+?(?=,))+

https://regex101.com/r/Tokjsw/2

Могут помочь любые идеи или более простые выражения регулярных выражений.

1 Ответ

1 голос
/ 05 августа 2020

Вы можете использовать это регулярное выражение:

(\w+)=(.+?)(?=,\w+=|$)

Обновленная демонстрация регулярных выражений

Детали RegEx:

  • (\w+): сопоставить ключ с 1+ символами слова
  • =: сопоставить =
  • (.+?): сопоставить значение с 1+ любого символа, который удовлетворяет следующему условию просмотра вперед
  • (?=,\w+=|$): убедитесь, что за значением следует запятая, ключ и = или конец строки
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...