Использование регулярного выражения в python для удаления двойных кавычек с исключениями - PullRequest
1 голос
/ 09 апреля 2020

Я пытаюсь удалить указанные c двойные кавычки из текста с помощью регулярного выражения в python. Я хотел бы оставить только те двойные кавычки, которые указывают дюйм. Так что это означало бы оставлять любую двойную кавычку после числа.

txt = 'measurement 1/2" and 3" "remove" end" a " multiple"""

Ожидаемый результат: measurement 1/2" and 3" remove end a multiple

Это самое близкое, что у меня есть.

re.sub(r'[^(?!\d+/\d+")]"+', '', txt)

1 Ответ

2 голосов
/ 09 апреля 2020

Просто используйте

(?<!\d)"+

См. демонстрацию на regex101.com .


Ваше первоначальное выражение
[^(?!\d+/\d+")]

в основном означает не (, ?, ! и др. c.


В качестве альтернативы, вы можете использовать более новый модуль regex с (*SKIP)(*FAIL):
import regex as re

junk = '''measurement 1/2" and 3" "remove" end" a " multiple"""
ABC2DEF3"'''

rx = re.compile(r'\b\d(?:/\d+)?"(*SKIP)(*FAIL)|"+')

cleaned = rx.sub('', junk)
print(cleaned)

, что даст

measurement 1/2" and 3" remove end a  multiple
ABC2DEF3
...