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 № 1Moż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