Od https://www.gnu.org/software/bash/manual/html_node/Tilde-Expansion.html o rozszerzeniu tyldy w bash:
Jeśli słowo zaczyna się od niecytowane znak tyldy („~”), wszystkie znaki do pierwszego niecytowane ukośnik (lub wszystkie znaki, jeśli nie ma nie cudzysłowionego ukośnika) są uważane za przedrostek tyldy.
Jak można użyć wyrażenia regularnego w smaku Pythona, aby dopasować (lub wszystkie) przedrostki tyldy z ciągu?
Jeśli ignoruję dwa „niecytowane” wymagania, moim wyrażeniem regularnym jest (~[.*])/
i 1
jest dopasowanym prefiksem tyldy.
Ale nie wiem, jak przedstawić „nieocenione” wymagania.
Odpowiedzi:
1 dla odpowiedzi № 1Możesz spróbować czegoś takiego:
~[^\/s]*(?:\.[^\/s]*)*
[^\/s]*
: zero lub więcej znaków, które nie są ukośnikiem, odwrotnym ukośnikiem lub białym znakiem.
(?:\.[^\/s]*)*
: zero lub więcej powtórzeń grupy, która nie przechwytuje, która rozpoczyna się znakiem ucieczki (cytowanym) i jest taka sama jak poprzednio.
1 dla odpowiedzi nr 2
(~[^/]*)
Jest to zgodne z prefiksem tyldy oraz wszystkimi następującymi po sobie nie-ukośnikami.
1 dla odpowiedzi nr 3
Czy to działa dla ciebie?
[^""](~[^/]*)
Grupuj wszystko po ~, co nie prowadzi przez pojedynczy lub podwójny cytat do /