Замените ди git в предложении, используя re.sub () в python - PullRequest
1 голос
/ 27 апреля 2020

Я пытаюсь использовать re.sub(), чтобы заменить общую оценку в предложении. Например, в Your score for quiz01 is 6/8. я хочу заменить общий балл на 9, ожидаемый результат - Your score for quiz01 is 6/9..

Я попробовал код ниже, но он возвращает (?!([a-zA-Z]+))(?:.+?)([0-9]\/9). **. Как мне изменить регулярное выражение для правильной замены di git?

import re
s = '** Your score for quiz01 is 6/8. **'

print(re.sub(r'(?!([a-zA-Z]+))(?:.+?)([0-9]\/[0-9])', r'(?!([a-zA-Z]+))(?:.+?)([0-9]\/9)', s))

# result print as (?!([a-zA-Z]+))(?:.+?)([0-9]\/9). **

1 Ответ

1 голос
/ 27 апреля 2020

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

re.sub(r'(\d/)\d(?!\d)', r'\g<1>9', s)

См. Демоверсию regex . Регулярное выражение соответствует

  • (\d/) - группе 1 (на которую указывает однозначная обратная ссылка \g<1> из шаблона замены; требуется синтаксис \g<N>, поскольку после обратной ссылки существует git): ди git и / char
  • \d - ди git
  • (?!\d) - без каких-либо других ди git .

См. Python демо :

import re
s = "Your score for quiz01 is 6/8."
print( re.sub(r"(\d/)\d(?!\d)", r"\g<1>9", s) )
# => Your score for quiz01 is 6/9.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...