(?m)\A(?=.*REGEX_TO_FIND)(?!.*MISSING_REGEX.*).*\z
regex może dostać trochę trudne, ale to rozpada się na dwie części.
- Znajdź pasujący termin/wyrażenie/słowo. Ta część nie jest zbyt trudna, ponieważ na to zwykle wygląda regex.
- Określenie terminu nie występuje. To trudna część, ale jest to możliwe.
Mam przykład HERE który pokazuje w jaki sposób chcesz znaleźć słowo connectReadOnly
w tekście, a nie mogą znaleźć disconnect
. Ponieważ tekst zawiera connectReadOnly
, zaczyna szukać następnego elementu, nie znajdując disconnect
. Od disconnect
jest w tekście nie powiedzie się na cały ciąg (, co będzie potrzebne, aby cały plik pasował do). Jeśli bawisz się drugim utworem, częścią z negacją (?!.*disconnect.*)
, możesz ustawić to jako regex, którego potrzebujesz. W moim przykładzie nie chcę znaleźć disconnect
w dowolnym miejscu w moim kodzie :) Można go łatwo zastąpić słowem do wyszukiwania, lub nawet bardziej złożonym wyrażeniem regularnym "nie znaleźć".
Kluczem jest użycie trybu wielowierszowego, który jest ustawiony na początku (?m)
, a następnie za pomocą początku/końca znaków ciąg. Używanie ^
i $
do rozpoczynania/kończenia linii, w której \A
i rozpoczyna się i kończy łańcuch, rozszerzając w ten sposób dopasowanie na cały plik.
EDYCJA: W przypadku użycia pytania i disconnect
: (?m)\A(?=.*connectReadOnly)(?!.*disconnect.*).*\z
. Zaktualizowany przykład można znaleźć here.
działa jak czar. –