Как заменить первые буквы в строке - PullRequest
0 голосов
/ 20 февраля 2019

Задана строка как:

s = "python is programming language p"

Я хочу получить:

s = "2ython is 2rogramming language p"

Итак, я хочу заменить все буквы "P / p", но только если слова начинаются с нее.

Я пробовал что-то вроде этого:

re.sub(r'(^p)*', r'/', string), but it didn't help

1 Ответ

0 голосов
/ 20 февраля 2019

Вы можете использовать

re.sub(r'\bp\B', '2', s, flags=re.I)

См. Демонстрационную версию regex .

Если вам нужно убедиться, что после буква 1010 * использовать

re.sub(r'\bp(?=[^\W\d_])', '2', s, flags=re.I)

См. еще одно демонстрационное выражение .

Подробности

  • \b - aграница слова
  • p - p или P (из-за re.I)
  • \B - граница не из слов (следующий символ должен быть словом char)
  • (?=[^\W\d_]) - позитивный прогноз, который требует, чтобы любая буква появлялась сразу справа от текущего местоположения.

Python demo :

import re
s = "python is programming language p"
print(re.sub(r'\bp(?=[^\W\d_])', '2', s, flags=re.I))
# => 2ython is 2rogramming language p
print(re.sub(r'\bp\B', '2', s, flags=re.I))
# => 2ython is 2rogramming language p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...