Nasıl alabilirim:
blablabla x/11/1048.1 blablabla blablabla
x/11/i blablabla
blablablax/11/a
blablabla x/11/b.2 blablabla blablabla blablabla
olmak:
x/11/1048.1.full.y
x/11/i.full.y
x/11/a.full.y
x/11/b.2.full.y
Nasıl alabilirim:
blablabla x/11/1048.1 blablabla blablabla
x/11/i blablabla
blablablax/11/a
blablabla x/11/b.2 blablabla blablabla blablabla
olmak:
x/11/1048.1.full.y
x/11/i.full.y
x/11/a.full.y
x/11/b.2.full.y
Yanıtlar:
İşte gitmenin bir yolu:
^.*?(x/[^/]+/\S+).*$
$1.full.y
Açıklama:
^ : begining of line
.*? : 0 or more any character, not greedy
( : start group 1
x : literally x
/ : literally /
[^/]+ : 1 or more any character that is not /
/ : literally /
\S+ : 1 or more character that is not a space
) : end group 1
.* : 0 or more any character
$ : end of line
. matches newline
Değiştirme:
$1.full.y : content of group 1 followed by .full.y
Verilen örnek için sonuç:
x/11/1048.1.full.y
x/11/i.full.y
x/11/a.full.y
x/11/b.2.full.y
.full.y
Dizilerin yerini değiştirdikten sonra satırın sonuna ekliyoruz blablabla
.
İlk önce, tüm 'blablabla' örneklerini (fazladan boşlukları kaldırmak için varyasyonları) kaldıran bir arama yapın.
Ardından, $
"satırın sonu" anlamına gelen düzenli ifadeler kullanın :
Yani, var
blablabla x/11/1048.1 blablabla blablabla
x/11/i blablabla
blablablax/11/a
blablabla x/11/b.2 blablabla blablabla blablabla
Blahbla'nın ne olduğu önemli değil.
bulmak .*(x/[^/]*/[^/\s\b]*[\s\b]).*
\ 1 ile değiştirin
Bulgunun yuvarlak parantez içindeki kısmı, korumak istediğiniz x / .... / ... şablonunuzdur.
verir
x/11/1048.1
x/11/i
x/11/a
x/11/b.2
Bazılarının onlardan sonra boşluk bıraktıklarını gördüm, regex'imde bir kusur olabilir ama farketmez, çizginin sonundaki boşluğu bulabilir ve kaldırabiliriz.
find: (\r?\n)
<- yani, bir satır ayırıcı veya satır sonlandırıcıyı, \ r \ n veya \ n izleyen boşluk karakterini bulun ve sadece satır ayırıcı veya satır sonlandırıcıyla değiştirin. Ondan alanı kaldıracağız.
ile değiştirin: \1
x/11/1048.1
x/11/i
x/11/a
x/11/b.2
Ve bu, x ile başlayan ve 'yakalayan' ile başlayan her çizgiyi bulur ve ardından onu .full.y ile değiştirir
bul: ile (^x/.*$)
değiştir\1.full.y
x/11/1048.1.full.y
x/11/i.full.y
x/11/a.full.y
x/11/b.2.full.y