#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.'"