2013-03-09 1 views
0

У меня есть некоторые входы, который включает в себя такие строки:Регулярного выражения соответствует числам и единица

5feet 
23m^2 
7 m/s 

которые я хотел бы переписать их как:

5 feet 
23 m^2 
7 m/s 

И для этого я мог бы использовать:

re.sub(r"([0-9])(?=[a-zA-Z])",r"\1*","5feet") 

Однако, у меня также есть номера, которые выглядят как:

23e-7 
58.234e-200 

которые соответствуют вышеуказанной схеме.

Есть ли способ, чтобы регулярное выражение каким-то образом соответствовало первой группе, но исключало второе?

+0

ли они каждый по своей собственной линии? – Ryan

+0

Будет ли «r» ([0-9.]) (? = [A-zA-Z]) (?! e- [0-9] +) «Работа для вас? – Wrikken

+0

Да, @minitech. – Richard

ответ

1

Вы можете лавировать на отрицательное опережения утверждение (?!...) (противоположность (?=...)), чтобы исключить тот случай:

re.sub(r"([0-9])(?=[a-zA-Z])(?!e[+-]?\d)",r"\1*","5feet") 
Смежные вопросы