Я пытаюсь извлечь LHS и RHS линейного уравнения, используя сопоставление RegEx в Ptython.

exp="+1-3=x+2";
parts = re.search("(.*?)=(.*?)", exp);
left = parts.group(1);
right = parts.group(2);

Хотя значение left зафиксировано правильно, значение right пусто.

Я что-то делаю не так? разумеется, я новичок в Python.

Спасибо.

2
mihsathe 22 Мар 2013 в 02:19
1
Это должно быть регулярное выражение? Как насчет left, right = exp.split('=')?
 – 
georg
22 Мар 2013 в 03:36
1
Мне известны методы манипулирования строками. Я пытался практиковать RegEx в Python, поэтому хотел добиться этого только с помощью RegEx.
 – 
mihsathe
22 Мар 2013 в 05:38

1 ответ

Лучший ответ

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

parts = re.search("(.*?)=(.*)", exp);

В противном случае сопоставление останавливается сразу после =.

Или используйте $ для привязки к концу строки.

Наконец, стоит отметить, что на самом деле вам здесь не нужно регулярное выражение:

left, _, right = exp.partition('=')
4
NPE 22 Мар 2013 в 02:21
Не так ли? раньше делал вещи нежадными?
 – 
mihsathe
22 Мар 2013 в 02:22
@mihsathe: Извини, был долгий день. Исправил формулировку в ответе.
 – 
NPE
22 Мар 2013 в 02:25