Я хочу соответствовать всем переменным (в формате змеи), которые заканчиваются в _value и не начинайте с Cana _ , canb_ < /code> ...,
Код: Выделить всё
CANF_
Это моя текущая настройка с Python < /p>
Код: Выделить всё
import re
def signal_ending_VALUE_updater(match: re.Match) -> str:
groups = match.groupdict()
return some_operation_on(group["SIGNAL_NAME"])
REGEX=r"(?\w+_VALUE)\b"
with open(file_path,'r') as f:
content = f.read()
content_new = re.sub(REGEX,signal_ending_VALUE_updater,content)
< /code>
К сожалению, эта регуляция не работает все время, например, если мы попробуем эту тестирование < /p>
test=" shared->option.mem = ((canAGetScuHmiVehReqLiftModBtnSt() == CANA_SCU_HMI_VEH_REQ_LIFT_MOD_BTN_ST_PRESSED_VALUE) ||"
re.find(REGEX,test)
< /code>
вернет переменную (CANA_SCU_HMI...
- : группа совпадает с именем signal_name
Код: Выделить всё
(?\w+_VALUE)< /code>: (?P...)
- То же, что и [a-za-z0-9 _] будет соответствовать именам переменных snakecase
Код: Выделить всё
\w
- обеспечивает один или несколько до
Код: Выделить всё
+
- соответствует буквальной строке _value в конце имени переменной.
Код: Выделить всё
_VALUE
Код: Выделить всё
\b
Подробнее здесь: https://stackoverflow.com/questions/794 ... -assertion