2016-09-23 12 views
6

wyrażenia regularne Perla mają sekwencję \K ukośnika:Czy istnieje odpowiednik sekwencji odwrotnego ukośnika Perl regexes K w języku Python?

\ K
ten pojawił się w Perl 5.10.0. Wszystko pasujące do lewej od \K nie jest zawarte w $& i nie zostanie zastąpione, jeśli wzór zostanie użyty w podstawieniu . To pozwala pisać s/PAT1 \K PAT2/REPL/x zamiast s/(PAT1) PAT2/${1}REPL/x lub s/(?<=PAT1) PAT2/REPL/x.

Mnemonik: Zachowaj.

Czy jest coś podobnego w Pythonie?

+2

Pythona ('moduł regex') obsługuje również. – revo

+0

@revo, czy dodajesz odpowiedź na ten temat (prawdopodobnie z linkiem do https://pypi.python.org/pypi/regex i/lub https://bitbucket.org/mrabarnett/mrab-regex), lub czy mogę? –

+0

(... również istotne, https://bitbucket.org/mrabarnett/mrab-regex/issues/151/request-k - bilet do '\ K' dodawany do modułu regex). –

Odpowiedz

7

Proponowana zamiana modułu Python re, available from pypi under the name regex, ma tę funkcję. Jego kanoniczne źródło repozytorium i narzędzie do śledzenia błędów to in bitbucket.

Został dodany pod koniec 2015 roku, w ticket 151; biorąc przykład jego użycia z tego biletu:

import regex as mrab 
>>> bsk = mrab.compile(r'start=>\K.*') 
>>> print(bsk.search('boring stuff start=>interesting stuff')) 
<regex.Match object; span=(20, 37), match='interesting stuff'> 
Powiązane problemy