Я пытаюсь проверить сгенерированный код C с регулярным выражением.Регулярное выражение для анализа некоторых особых случаев кода C
На самом деле линия мне нужно проверить, всегда начинается так же
R_Wrt_somename(V_var)
или
R_Wrt_othername((int64) (V_var2 * 3))
Я уже получил выражение для первого, но я не в состоянии получить фитинг выражение для второй возможности вызова функции.
Есть ли кто-нибудь, кто может помочь мне решить эту проблему? Я также был бы признателен за регулярное выражение с объяснением, поскольку я только начал работать с ними.
Выражение для первого типа функции:
R_Wrt_(\w+)\((\s*(V_)[a-zA-Z_0-9\[\] ]+)
Что вы действительно пытаетесь сделать? Использование регулярного выражения для синтаксического анализа общего С по существу является убыточным предложением. Даже для ограниченных подмножеств это может быть проблемой. Какие части ваших примеров различаются и какие части фиксированы?Похоже, что префикс 'R_Wrt_' может быть исправлен; остальная часть имени до круглой скобки является переменной. Могут ли быть пробелы раньше? Перед скобкой? Исправлен ли префикс 'V_' для простой ссылки на переменные, или это может измениться? Что вы написали для первого матча? На каком языке вы встраиваете свое регулярное выражение? Сколько стоит второй пример? –
Например, всегда ли это '(int64)' как литой, или это могут быть другие типы? Является ли выражение после броска всегда в скобках? Всегда ли это один набор скобок, с одной переменной и умножением; это число всегда 3? Может ли выражение быть более сложным? Какие проблемы вы ищете? Есть ли точка с запятой после этих выражений или больше материала? Как вы можете видеть, вы оставили очень много информации из этого вопроса - и трудно дать хороший ответ, пока мы не узнаем, с чем вы имеете дело. –
Вы заявили, что у вас уже есть регулярное выражение для первого шаблона, не могли бы вы добавить его в свой вопрос? – FriendFX