Как использовать регулярное выражение для исключения определенной фразы из результата?

Как написать регулярное выражение, чтобы обрабатывались запросы с указанными наименованиями систем, исключая запросы на предоставление доступа? Требуется исключить подходы по типу "Предоставить доступ в Наименование" из обработки. Предприняты попытки создать ^.*(Наименование|System)(?!.*(доступ Наименование|System)), но данная регулярка возвращает неверные результаты. Нужна помощь в написании корректного регулярного выражения.
  • 8 декабря 2023 г. 12:58
Ответы на вопрос 2
Для исключения определенной фразы из регулярного выражения можно использовать отрицательный просмотр вперед (negative lookahead).

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

```
^(?!.*доступ).*Наименование|System
```

В данном выражении `(?!.*доступ)` - это отрицательный просмотр вперед, который исключает строки, содержащие слово "доступ" перед указанным наименованием или системой.

Пример использования в Python:

```python
import re

text = """
Предоставить доступ в System
Наименование
Предоставить доступ в Наименование
System
"""

pattern = re.compile(r"^(?!.*доступ).*Наименование|System", re.MULTILINE)
matches = pattern.findall(text)

print(matches)
```

Результат:
```
['Наименование', 'System']
```

Это регулярное выражение вернет только строки, содержащие "Наименование" или "System", исключая строки с фразой "Предоставить доступ в Наименование" или "Предоставить доступ в System".
(?!...) перенести в начало шаблона и добавить предлоги в к на 
Похожие вопросы