Załóżmy, że mam ciąg z dużą ilością losowej rzeczy w nim tak:Python znalezienie podciąg między niektórymi postaciami za pomocą wyrażenia regularnego i zastąpić()
strJunk ="asdf2adsf29Value=five&lakl23ljk43asdldl"
I jestem zainteresowany w uzyskaniu podciąg siedzi między ' Wartość = "i" & ", która w tym przykładzie miałaby wartość" pięć ".
mogę używać regex jak poniżej:
match = re.search(r'Value=?([^&>]+)', strJunk)
>>> print match.group(0)
Value=five
>>> print match.group(1)
five
Dlaczego match.group (0) jest cała sprawa 'Value = pięć' i grupa (1) jest tylko 'pięć'? I czy istnieje sposób, aby uzyskać tylko "pięć" jako jedyny rezultat? (To pytanie wynika z mi tylko o wątpliwy zrozumienie regex)
Jestem również będzie musiał dokonać zmiany w tym ciąg takich takich jak:
val1 = match.group(1)
strJunk.replace(val1, "six", 1)
co daje:
'asdf2adsf29Value=six&lakl23ljk43asdldl'
Biorąc pod uwagę, że planuję wykonanie powyższych dwóch zadań (znalezienie ciągu znaków między "Wartość =" i "&", a także zastąpienie tej wartości) w kółko, zastanawiałem się, czy istnieją inne, bardziej skuteczne sposoby szukania podciągu i zastąpienie go oryginalnym ciągiem znaków. Nie mam nic przeciwko temu, co mam, ale chcę się upewnić, że nie zajmę więcej czasu, niż będę musiał, jeśli będą lepsze metody.
Odpowiedź Mahmouda Abelkadera również zadziała - o ile masz gwarancję, że "=" i "&" nie pojawią się nigdzie indziej w strJunk. –