Mam plik tekstowy oznaczający uwagi pojedynczym '
.
Niektóre wiersze mają dwa cudzysłowy, ale muszę pobrać wszystko z pierwszego wystąpienia a '
i nowego wiersza.
I AL01 ' A-LINE '091398 GDK 33394178
402922 0831850 ' '091398 GDK 33394179
I AL02 ' A-LINE '091398 GDK 33394180
400722 0833118 ' '091398 GDK 33394181
I A10A ' A-LINE 102 ' 53198 DJ 33394182
395335 0832203 ' ' 53198 DJ 33394183
I A10B ' A-LINE 102 ' 53198 DJ 3339418
Odpowiednim wyrażeniem regularnym byłoby „znak, po którym następuje dowolna liczba dowolnych znaków [w tym zero znaków], kończących się znacznikiem końca łańcucha / linii:
A jeśli chcesz uchwycić wszystko po znaku „char, ale nie uwzględniać go w danych wyjściowych, użyj:
Zasadniczo oznacza to, że podaj mi wszystkie znaki następujące po znaku „do końca wiersza.
Edycja : zauważono, że $ jest niejawne podczas używania. * I dlatego nie jest ściśle wymagane, dlatego wzorzec:
jest technicznie poprawny, jednak jaśniej jest być konkretnym i unikać nieporozumień przy późniejszej konserwacji kodu, stąd też używam $. Uważam, że zawsze lepiej jest deklarować jawne zachowanie niż polegać na zachowaniu ukrytym w sytuacjach, w których można kwestionować jasność.
źródło
Rozpoczynając od pojedynczego cudzysłowu (
'
), dopasuj dowolny znak (.
) zero lub więcej razy (*
) aż do końca wiersza ($
).źródło
Kiedy próbowałem '. * W Windows (Notepad ++), pasowałoby wszystko po pierwszym' do końca ostatniej linii.
Aby uchwycić wszystko do końca tej linii, wpisałem:
To uchwyciłoby tylko wszystko od „do końca tej linii”.
źródło
W twoim przykładzie wybrałbym następujący wzór:
użyj opcji wielowierszowych i globalnych, aby dopasować wszystkie wystąpienia.
Aby dołączyć wysuw linii do dopasowania, możesz użyć:
Ale może to pominąć ostatnią linię, jeśli nie ma wysuwu.
W przypadku jednej linii, jeśli nie musisz dopasowywać wysuwu linii, wolałbym użyć:
źródło
Spowoduje to uchwycenie wszystkiego, aż do „w odwołaniu wstecznym 1 - i wszystko po” w odwołaniu wstecznym 2. Być może trzeba będzie uciec od apostrofów, choć w zależności od języka (\ ”)
Szybka modyfikacja: jeśli linia nie ma '- referencji wstecznej 1, powinna nadal przechwytywać całą linię.
źródło
https://regex101.com/r/Jjc2xR/1
Jestem pewien, że ten działa, uchwyci serię de hexa w źle skonstruowanym tekście wielowierszowym poniżej
Jestem wiecznym nowicjuszem w regexie, ale spróbuję to wyjaśnić
(\ w * (Hex): w *): Znajdź tekst w wierszu, w którym ciąg zawiera „Hex:”
(. *?) To jest drugi przechwycony tekst i oznacza wszystko po nim
(? = | $) tworzy limit, który jest odstępem między = a |
Więc z drugą grupą będziesz miał wartość
źródło