/ / Regex znajdź i zamień: usuń wszystko * oprócz * match - regex, notepad ++

Regex znajdź i zamień: usuń wszystko * oprócz * meczu - wyrażenie regularne, notatnik ++

Używam Notepad ++, aby usunąć wszystko z HTML z wyjątkiem pasującego identyfikatora („idxxxxxx”). Oto (część) HTML:

{
href : "/id123456",
title : "Book 1",
year : "2013",
},
{
href : "/id234567",
title : "Book 2",
year : "2014",
},
{
href : "/id345678",
title : "Book 3",
year : "2015",
}

Ten wyrażenie regularne nie działa zgodnie z oczekiwaniami:

[^idd{6}]

Zamiast pozostawiać wszystkie pasujące „idxxxxxx”, również wychodzi Części w tym: ciągi liczb, każdy wystąpienie „id”, niekoniecznie po nim 6 cyfr itp.

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz użyć resetu oddziału.

Odnaleźć (?s)(?|.*?(idd{6})|.*())
Zastąpić $1

 (?s)                   # Dot-all
(?|                    # Branch Reset
.*?
( id d{6} )           # (1)
|
.*
( )                    # (1)
)

0 dla odpowiedzi nr 2

Spróbuj tego:

(?s).*?(idd{6})|(?!idd{6}).*$

Wykorzystuje negację !?. (?s) dla modyfikatora wieloliniowego.

Twój Regex jest oczywiście błędny. [^idd{6}] oznacza dowolny JEDEN znak, który nie jest i, d, , {, }, lub 6.


0 dla odpowiedzi № 3
Find what:     [sS]+?/(idd+)|[sS]*
Replace with:  1n

Wydajność:

id123456
id234567
id345678