метод sub регулярного выражения не заменяет все вхождения в регулярном выражении python - PullRequest
1 голос
/ 23 мая 2019

Я пытался использовать суб-метод регулярного выражения, но он не заменяет все вхождения. Пожалуйста, смотрите код ниже. Я хотел заменить все вхождения "&&" на "и". Здесь внутри выражения есть начальный и конечный пробел.

>>> string =" && && 7978888 && 896"
>>> tmp = re.sub("( && )"," and ",string)
>>> tmp
' and && 7978888 and 896'

Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 23 мая 2019

Вы можете использовать обходные пути в своем регулярном выражении, так как у вас совпадающие совпадения:

(?<= )&&(?= )

Код:

>>> string =" && && 7978888 && 896"
>>> tmp = re.sub(r"(?<= )&&(?= )", "and", string)
>>> tmp
' and and 7978888 and 896'

Использование утверждений lookbehind и lookahead здесь делает регулярное выражениеДвижок только подтверждает наличие места до и после && без фактического перемещения текущей позиции.

0 голосов
/ 23 мая 2019

Путаница в том, что между обоими && есть только ОДИН пробел. Если бы было ДВУХ пробелов, то это работало бы так, как ожидалось, но зачем беспокоиться о включении пробелов в регулярное выражение? "(&&)" не будет работать хорошо?

>>> import re
>>> string = " && && 7978888 && 896"
>>> tmp = re.sub(r"&&", "and", string)
>>> tmp
' and && 7978888 and 896'

Если этого недостаточно, какие еще уникальные ограничения вам нужно соблюдать?

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