В настоящее время я пытаюсь проанализировать файл C Output.map с помощью регулярных выражений.Я рассматриваю каждую строку отдельно: одна строка может выглядеть следующим образом
__func_name |00010d88| T | FUNC|00000010| |.text
Ожидаемый результат:
1) "__func_name"
2) "00010d88"
3) "T"
4) "FUNC"
5) "00000010"
6) (пустая строка)
7) ".text"
8) (пустая строка)
Однако количество пробелов между текстами варьируется: другая строка может выглядеть следующим образом:
__func_name2|0007bb7c| T | FUNC|00000034| |.text sourcefile.c:49
1) "__func_name2" 2) "0007bb7c" 3) "T"4)" FUNC "5)" 00000034 "6) (пустая строка)
7)" .text "
8)" sourcefile.c: 49 "
Как вы можете видеть, меняется не только количество пробелов, но есть и исходный файл.Теперь я попытался решить эту проблему с помощью регулярного выражения.Мне в основном нужны следующие требования для моего регулярного выражения
Буквенно-цифровая строка
A (шестнадцатеричное) Число
Одна буква
Строка
A (шестнадцатеричное) число
Необязательнострока
Другая необязательная строка
Каждая группа отделяется символом |
.Я попробовал это регулярное выражение.Хотя неполный, regexr говорит мне, что я сопоставляю только первую группу.
Не могли бы вы помочь мне выяснить, что не так с моим регулярным выражением?
([__A-Za-z0-9])\w+|((([\|]{1})&[0-9a-h]&([\|]{1})))\w+|([A-Z])\w+
Вы можете попробовать живую демонстрациюздесь: https://regexr.com/4gpvf
Редактировать: добавлены ожидаемые результаты