Analizuję niektóre bardzo duże pliki dziennika za pomocą wyrażeń regularnych w języku Python. Potrzebuję zastąpić każdy numer w pliku dziennika, z wyjątkiem liczb, które są poprzedzone przez "java:" (pliki dziennika są tworzone przez program java).Numery dopasowań nie są poprzedzone ciągiem znaków
Oznacza to, że biorąc pod uwagę, że mamy linię mówiąc:
To jest podrobiony linia testowa z limit = 300 robi 53 rund, a błąd jest (Abc.java:417), a niektóre bardziej
numery 300 i 53 powinny zostać zastąpione, ale nie 417.
filtrować na podstawie wiersza, a należy zauważyć, że nie wszystkie wiersze zawierają java:[number]
.
Najbliżej mam zdobyć to ((?<!java:)[0-9]+)
Co próbowaliście? Próbowanie czegoś jest procesem uczenia się, powinieneś to zrobić. – HamZa
Poszukaj ** negatywnych twierdzeń lookbehind **. Są zaprojektowane tak, by robić dokładnie to, na co masz ochotę. –
Przepraszam, przypadkowo uratowałem to pytanie, zanim skończyłem. Teraz jest aktualizowany. Próbowałem negatywnego lookbehind, ale mam problem z tym, że nie pasuje do żadnej z poniższych liczb, dopóki nie pojawi się znak nieliczący. – beruic