Я изо всех сил пытаюсь написать подходящее регулярное выражение для обнаружения строки, которая включает в себя определенный шаблон (номер версии) и краткую дату формы.Эта строка взята из Serialport в приложении Electron, которое я создаю.
Эта строка представлена в следующих трех шаблонах на основе аппаратного обеспечения, которое отвечает, но часто находится между \r\n
и, возможно, другими строками:
MyHardwareName Vn.nn dd/mm/yy
⇒ (MyHardware V1.23 01/02/03)
MyHardwareName Vnn.nn dd/mm/yy
⇒ (MyHardware V12.34 01/02/03)
MyHardwareName Vn.nn dd/mm/yyyy
⇒ (MyHardware V1.2301/02/2003)
MyHardwareName Vnn.nn dd/mm/yyyy
⇒ (MyHardware V12.34 01/02/2003)
Самое близкое, что у меня есть, - это просто определить дату и вручную обработать и просмотретьдля строки, начинающейся с переданной команды до CRLF.Это ненадежно, и я иногда получаю фрагменты следующей строки.Не говоря уже о том, что .split()
возвращает совпадение из нескольких частей, что не идеально.
Мои попытки
Ответ данных для запуска регулярного выражения на
hardware -v
...(need to ignore junk here in case there is any)
MyHardware V1.23 01/02/20 (This is the only line I need)
PROCESSOR:xxxxxxxxxx
abc <n> <c> [r]
def <n> <c> [r]
...
регулярного выражения:
/([0-2][0-9]|(3)[0-1])(\/)(((0)[0-9])|((1)[0-2]))(\/)\d{0,2}/
-> Последовательно фиксирует строку и после даты
/(hardware -v\s+)(.*)(\r\n)/
→ Возвращает:
["hardware -v", "My ", "Hardware V1.10 06/02/15", "
↵PROCESSOR:SAMD51J19A"]
В конечном итоге я хочу иметь возможность разбитьстрока с регулярным выражением и получить «MyHardware V1.10 06/02/15» (или один из вышеуказанных вариантов, где версия 2 цифры, а год 4 цифры).
Кто-нибудь может посоветовать, возможно ли это сделать в одном регулярном выражении?