Отрицательный взгляд на несколько строк - PullRequest
1 голос
/ 22 марта 2020

Я хотел заменить «keepalive» на «keepalive 10 60», если он недопустимо настроен, или вставить «keepalive 10 60», если «keepalive» не найден.

Пока я придумал это, но он все еще вставляется в каждую пустую строку, в то время как "keepalive" находится и заменяется:

^keepalive(?!(\s[[:digit:]]{1,3}){2}).*\n|((?<!keepalive)^$(?!keepalive))

Сценарий 1:

keepalive 60

resolv-retry infinite

Ожидается:

keepalive 60 90

resolv-retry infinite

Результат:

keepalive 60 90
keepalive 60 90

resolv-retry infinite

Сценарий 2:



resolv-retry infinite

Ожидаемый результат:

keepalive 60 90

resolv-retry infinite

Результат:

keepalive 60 90

keepalive 60 90

resolv-retry infinite

Я очень неопытен в области регулярных выражений и буду очень признателен за любые советы и подсказки!

1 Ответ

0 голосов
/ 23 марта 2020

Сделайте это в два шага:

шаг 1: нормализуйте текст, удалив «keepalive 60»

      re.sub(r"keepalive +\d{2}","", your_str)
      #Adjust for "\n" as necessary

шаг 2: замените «resolv-retry infinite» на то, что вы хотите ,

       re.sub(r"resolv-retry infinite","whatever your want", your_str)
       #adjust for "\n" as necessary 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...