Как удалить две конкретные главы - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть следующий текст:

rule="Aa&~a->c"

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

auxRegla=re.sub(r"(?<!~)\ba\b",r"",regla)

\ba\b предназначены для установки границ, и это прекрасно работает, и (?<!~) намерен удалить знак ~, но эти двое здесь ничего не делают.

Мне нужен результат:

Aa&->c

Ответы [ 2 ]

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

Прежде всего, вы используете lookbehind для ~, который будет соответствовать вещи внутри, но не будет потреблять ее (проще говоря, он не удалит ~, только a, которыес этим).

Во-вторых, вы используете отрицательный lookbehind, поэтому ваше регулярное выражение соответствует a, а НЕ предваряется ~.

Лучшее регулярное выражениедля вас это ~a\b (без первой границы слова \b, поскольку ~ определенно не является символом слова, а a определенно есть, поэтому всегда верно)

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

Вы не должны использовать отрицательный взгляд здесь, так как вы действительно хотите соответствовать ~. Вместо этого вы можете напрямую сопоставить ~a, но с подтверждением границы слова после a:

re.sub(r"~a\b", '', regla)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...