Python: заменить все экземпляры буквенно-цифровой подстроки, за исключением чисел более высокого порядка - PullRequest
1 голос
/ 02 апреля 2019

Используя re.sub, я пытаюсь найти и заменить все экземпляры буквенно-цифровой подстроки (например, run1), кроме экземпляров подстроки, где числовое значение является номером более высокого порядка (например, run12).

Я думал, что просмотр позади (?<![0-9]) предотвратит совпадение "run12", но я не знаком с его использованием и, вероятно, использую его неправильно.

import re

mystring = '/mypath/run1/run12_run1_file.txt'
mynewstring = re.sub(r'run1(?<![0-9])',r'run2',mystring)
print mynewstring

В идеале это будет возвращаться:

/mypath/run2/run12_run2_file.txt

Вместо этого он ничего не соответствует и возвращает:

/mypath/run1/run12_run1_file.txt

Есть предложения?

1 Ответ

2 голосов
/ 02 апреля 2019

Вы должны использовать отрицательный прогноз вместо отрицательного, поскольку вы пытаетесь избежать соответствия run1, за которым следует цифра:

mynewstring = re.sub(r'run1(?!\d)', 'run2', mystring)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...