for (var i = 0; i < 3; i++) {
createfunc(i)();
}
function createfunc(i) {
return function(){console.log("My value: " + i);};
}
Вы можете передать функцию re.sub()
. В функции вы можете вернуть значение, необходимое на основе захваченной группы. Простой код для иллюстрации:
>>> def fun(m):
... if m:
... if m.group(1):
... return 'x'
... else:
... return 'y'
>>>print re.sub(r"([A-Z]+)|([a-z]+)", fun , "ab")
Функция fun()
проверяет, удалось ли совпадение и на основе захваченной группы, возвращает строку замены. Если [A-Z]+
был сопоставлен, x
является заменой строки else [a-z]+
, и y
является заменой строки.
Для получения дополнительной информации: doc
Обычно вы просто используете две замены:
re.sub(r"[A-Z]+", replacement1, string)
re.sub(r"[a-z]+", replacement2, string)
Anticlimactic, right?
На самом деле это меньше кода, чем альтернативы, и гораздо яснее, что вы делает.