Próbuję przeanalizować dokument zawierający zaśmiecone numery referencyjne.
Tekst tekstowy {4: 2} bardziej niesamowity tekst {4: 3} znacznie później {222: 115} i jeszcze trochę więcej tekstu.
Odnośniki zawsze będą zawarte w nawiasach, a między nimi będzie zawsze dwukropek. Napisałem wyrażenie, aby je znaleźć.
{[0-9]:[0-9]}
Jednak to oczywiście zawodzi w momencie, gdy napotkasz dwu- lub trzycyfrową liczbę i mam problem ze zrozumieniem, co to powinno być. Nigdy nie będzie więcej niż 3 cyfry {999: 999} to maksymalny rozmiar, z którym można sobie poradzić.
Czy ktoś ma pomysł na odpowiednie wyrażenie, aby to załatwić?
regex
tagu.Odpowiedzi:
spróbuj dodać plus (y)
źródło
Jakiego silnika regex używasz? Większość z nich będzie obsługiwać następujące wyrażenie:
W
\d
rzeczywistości jest skrótem[0-9]
, ale ważną częścią jest dodanie,+
które oznacza „jeden lub więcej”.źródło
Spróbuj tego:
Te
{1,3}
środki „dopasowania pomiędzy 1 i 3 z poprzednich znaków”.źródło
Możesz określić, ile razy chcesz dopasować poprzedni element, używając
{min,max}
.Możesz także użyć
\d
dla cyfr zamiast[0-9]
dla większości odmian wyrażeń regularnych:Możesz także rozważyć ucieczkę od zewnętrznego
{
i}
tylko po to, aby było jasne, że nie są one częścią definicji powtórzeń.źródło
{\ d *: \ d *} powinno działać.
* oznacza dopasowanie 0 lub więcej poprzedzających wystąpień, które jest cyfrą.
źródło