• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Wyrażenia regularne (regex) - Zaznaczanie wszystkiego między dwoma wyrażeniami

0 głosów
492 wizyt
pytanie zadane 15 stycznia 2016 w Algorytmy przez Adam Nowicki Obywatel (1,600 p.)
zamknięte 15 stycznia 2016 przez Adam Nowicki

Cześć, potrzebuję regexa, który wyciąga mi wszystko między jednym a drugim wyrażeniem. Przykładowy tekst:

A234654
Andrzej
Ala
B22564654
Ola
Przemek
Michał
A2351651
Lol
B2135

I tutaj chciałbym wyciągać wszystko między A\d+ a B\d+ czyli 2 matche:

  1. Ala Andrzej
  2. Lol

Ilość linijek ma nie mieć wpływu i ma rozbijać to na osobne matche. Próbowałem sam coś takiego wyskrobać, i doszedłem do czegoś takiego:
A\d+((.*\n)?)*B\d+

Niestety, to zaznacza do ostatniego znalezionego w tekście B\+d a nie pierwszego by to rozbić. Jeśli to ma znaczenie to dodam, że implementacja tego będzie się odbywać w C#.

komentarz zamknięcia: Znalazłem rozwiązanie. Dla pokoleń: (.|\n)*?
komentarz 19 lipca 2016 przez Andrzej Kmicic Początkujący (410 p.)
edycja 19 lipca 2016 przez Andrzej Kmicic

 

Polecam plugin do Notepada++ Olega Sthilo (Cs-Script), dla prostych rozwiązań nie trzeba odpalać VisualStudio a nawet można skompilować do pliku exe.


using System;
using System.Diagnostics;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using System.IO;

class Script
{
    [STAThread]
    static public void Main(string[] args)
    {
		string pattern = @"(A[0-9]+)((.|\n)*?)(B[0-9]+)";
		string input = File.ReadAllText("C:\\Users\\wojte\\Documents\\email.txt");
		//Console.WriteLine(input);
      foreach (Match match in Regex.Matches(input, pattern, RegexOptions.Multiline))
         Console.WriteLine("{0}", match.Groups[2]);
    }
}

Podobne pytania

0 głosów
0 odpowiedzi 233 wizyt
0 głosów
2 odpowiedzi 855 wizyt
pytanie zadane 10 czerwca 2023 w JavaScript przez andrzej.polak Nowicjusz (220 p.)
0 głosów
1 odpowiedź 511 wizyt
pytanie zadane 9 stycznia 2022 w Matematyka, fizyka, logika przez dark41 Użytkownik (760 p.)

93,695 zapytań

142,613 odpowiedzi

323,225 komentarzy

63,226 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...