Вставка регулярных выражений Python

#python #regex

#python #регулярное выражение

Вопрос:

У меня есть строка s

 s = "x01777"
  

Теперь я хочу вставить a - в s в этой позиции:

 s = "x01-777"
  

Я пытался сделать это с помощью re.sub() , но я не могу понять, как вставить - , не удаляя мое регулярное выражение (мне нужна эта сложная структура регулярных выражений, потому что строка, с которой я хочу работать, намного длиннее).

На самом деле, это выглядит примерно так:

 re.sub('wddddd', 'here comes my replacement', s)
  

Как мне настроить мою вставку?

Комментарии:

1. - всегда ли после 3-го символа? Зачем использовать regext для этого. Пара строковых операций была бы намного проще.

2. Мне сказали использовать регулярное выражение. Формат строки может измениться, но где-то внутри строки всегда будет этот шаблон

3. Какой шаблон? Пожалуйста, приведите еще несколько примеров.

4. Итак, строка, в которую вы заменяете это, на самом деле может быть намного длиннее и содержать несколько таких чисел?

5. @LutzHorn этот шаблон: ‘wddddd’

Ответ №1:

Записывайте первые три символа в группу, а затем следующие три в другую группу. В заменяющей части просто добавьте - после первой захваченной группы, за которой следует вторая захваченная группа.

 >>> import re
>>> s = "x01777"
>>> m = re.sub(r'(wdd)(ddd)', r'1-2', s)
>>> m
'x01-777'
>>> 
  

Комментарии:

1. Использование (.*) — не очень хорошая идея. Вместо этого вы должны сопоставить 3 цифры.

2. это решение! большое вам спасибо! Примем ваш ответ как можно скорее

3. Обратите внимание, что вы должны включить r перед repl строкой, иначе вы можете получить escape-символы в своих выходных данных. Пример: re.sub("(w)(n)", "1.2", "This is a testnFollowed by second test.") —> "'This is a tesx01.x02Followed by second test.'"