Regex заменить или добавить подстроку в Python - PullRequest
0 голосов
/ 02 марта 2019

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

Пример:

set beta=10
"alpha=25 beta=42 delta=43" need to become "alpha=25 beta=10 delta=43"
"alpha=25 delta=43" need to become "alpha=25 delta=43 beta=10"

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

dest = re.sub(r'(.*)(beta=\d+)( .*)',r'\1 beta=10 \3',source)

Я могу сделать это, но мне нужен этот результат в одном выражении:

if re.search(r'beta=\d+',source):
    dest = re.sub(r'(.*)(beta=\d+)( .*)',r'\1 beta=10 \3',source)
else:
    dest = source + " beta=10"

Так что, если бета = xx существуетв строке, и она не соответствует бета = yy, тогда замените

Так что если бета = xx не существует в строке, тогда добавьте бета = yy к строке

1 Ответ

0 голосов
/ 02 марта 2019

Предполагая, что бета = 10 присутствует только 0 или 1 раз в строке, вы можете сделать это следующим образом:

dest = re.sub("(beta=\d+|$)","beta=10",source+" ",1).strip()

Шаблон считает конец строки альтернативным совпадением для беты =\ d + и, поскольку мы заменяем только первое вхождение, оно будет применяться только тогда, когда строка не содержит бета = \ d +

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...