Javascript регулярное выражение \ K (сохранить) подстановка? - PullRequest
0 голосов
/ 26 апреля 2019

Так что, к сожалению, Javascript не поддерживает токен \K в регулярных выражениях, я ищу способ обойти это.

Моя проблема:

Iполучите следующее регулярное выражение: Total statistics:\s+\K\d+, которое должно дать мне "ведомые метры" моей газонокосилки из строки журнала, как это:

{"logSystem":[[2019,4,26,10,37,0,44872,"Battery Charge Started! 17.0°C 
21.05Volt","#000099","normal"],[2019,4,26,10,37,0,44871,"Total statistics: 
334418m, 23862min, blade on time: 21289min","#2E2EFE","bold"], 
[2019,4,26,10,37,0,44870,"Current cut statistics: 2m, 0min, blade on time: 
0min","#2E2EFE","bold"],

Рабочий пример (но не в JS) здесь: https://regex101.com/r/oL9gN5/11

Дополнительные подсказки:
Метры не всегда имеют длину 6 символов, могут быть 7 в течение нескольких лет
Иногда строка Total statistics: встречается дважды в журнале, первыйтребуется сопоставление (более новые данные).

Для пояснения:
в большинстве случаев я бы использовал разбор JSON (и вы должны использовать тоже), но остальная часть журналав основном бесполезные данные, и мне нужна только одна точка данных.Газонокосилка создает запись в журнале каждый раз, когда сталкивается с препятствием или поворачивает на краю зоны (я вырезал эту часть).Кроме того, он показывает только последние 100 строк журнала без возможности перехода вперед / назад.

Мне потребовалось некоторое время, чтобы выяснить это регулярное выражение, только чтобы обнаружить, что оно не работает в JS (iobroker),Спасибо за любую помощь!

1 Ответ

1 голос
/ 26 апреля 2019

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

Total statistics:\s+(\d+)

Здесь ^.*?Total statistics: гарантирует, что он будет соответствовать только первому вхождению Total statistics:, за которым следует один или несколько пробелов, а затем (\d+) будет захватывать числа в первом шаблоне группировки.

Regex Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...