Сомнения в регулярном выражении - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть строка, которая содержит список операторов сравнения и его операндов. из этого списка я хочу выделить операнды, у которых есть только оператор '='. cellvalue = 'var1 == 5\n var2 >= 0.2\n var3 <= 0\n var4 = 5\n var5 = -3.0' Из этой строки я хочу получить список, который содержит все операнды с использованием оператора '='. то есть list_req1 = ['var4','var5'] и list_req2 = ['5','-3.0']. Как бы я мог сделать это с помощью регулярных выражений?

I have tried the following command:
all_signals = []
regx = '([a-zA-Z0-9_.]+)\s*(=)'
for m in re.findall(regx, cellvalue):
        all_signals.append(m[0])
print(all_signals)
this returns: ['var1','var4','var5']



expected: ['var4','var5']
actual: ['var1','var4','var5']

1 Ответ

0 голосов
/ 11 ноября 2019

Вы можете просто сопоставить один оператор равенства, окруженный пробелами, следующим образом:

re.findall(r'\s=\s', value)

Следующий более сложный, а также захватывает имена переменных и числовые значения как group (1) и group (2) соответственно:

re.findall(r'\b(\w+)\s+=\s+([\d.]+)')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...