Применение нескольких условий в re.sub () [duplicate]

попробуйте эту более короткую
  • no array
  • no extra для цикла

for (var i = 0; i < 3; i++) {
    createfunc(i)();
}

function createfunc(i) {
    return function(){console.log("My value: " + i);};
}

] http://jsfiddle.net/7P6EN/

1
задан user2965473 12 June 2016 в 17:31
поделиться

2 ответа

Вы можете передать функцию 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

1
ответ дан gaganso 26 August 2018 в 21:58
поделиться

Обычно вы просто используете две замены:

re.sub(r"[A-Z]+", replacement1, string)
re.sub(r"[a-z]+", replacement2, string)

Anticlimactic, right?

На самом деле это меньше кода, чем альтернативы, и гораздо яснее, что вы делает.

0
ответ дан Laurel 26 August 2018 в 21:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: