[ Príspevkov: 6 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.11.07
Prihlásený: 02.07.21
Príspevky: 101
Témy: 21 | 21
Bydlisko: Bratislava
NapísalOffline : 01.07.2021 10:18 | Regex replace

Ahoj, chcem poprosiť o radu. Potrebujem zameniť text v súbore za nasledujúcich podmienok.
Mám textový súbor s obsahom:
Kód:
123
repa
kapusta
cibuľa

456
repa
kapusta
cibuľa

123
kapusta
cibuľa

456
kapusta
cibuľa

123
mrkva
petržlen
kapusta
pór
cibuľa

456
mrkva
petržlen
kapusta
pór
cibuľa


Potrebujem nahradiť reťazec "kapusta" reťazcom "kel". ale len v skupine, ktorej predchádza reťazec "123", teda nie v tej skupine, ktorej predchádza reťazec "456".
Alebo inak, nahradiť "kapusta" reťazcom "kel" iba vtedy, ak hocikde predtým bol reťazec "123" nenasledovaný reťazcom "456". Resp. v smere späť od reťazca "kapusta" je bližšie reťazec "123" ako reťazec "456".
Predpokladám, že sa toto dá spraviť cez Regex.
(Používam aplikáciu fnr.exe)

Výsledkom by malo byť:
Kód:
123
repa
kel
cibuľa

456
repa
kapusta
cibuľa

123
kel
cibuľa

456
kapusta
cibuľa

123
mrkva
petržlen
kel
pór
cibuľa

456
mrkva
petržlen
kapusta
pór
cibuľa


Veľmi pekne ďakujem za tipy.


Online

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 15.06.14
Prihlásený: 27.04.26
Príspevky: 18014
Témy: 144 | 144
Bydlisko: Bratislava
NapísalOnline : 01.07.2021 10:24 | Regex replace

samotny regex ziadny replace nepozna, je to len string pattern


_________________
ITX >>> ATX
Offline

Užívateľ
Užívateľ
Regex replace

Registrovaný: 01.10.06
Prihlásený: 17.07.25
Príspevky: 6561
Témy: 15 | 15
Bydlisko: Bratislava
NapísalOffline : 01.07.2021 11:04 | Regex replace

On mal podla mna chce prave ten pattern.

Ja na to zvyknem pouzivat nejaky online tool.

Napriklad [https://regex101.com/]
Tam som si skopiroval ten tvoj text a napriklad pattern:
Kód:
(123(\n[^0-9]+)+(kapusta))+

v groupe 3 deteguje prave tu kapustu, teraz to uz len podhodit nejaku programu co ti ten subor cita a nahradit obsah group 3 retazcom "kel"

samozrejme nastavenie spracovania musis mat multiline global


_________________
PC: Intel Q6600@3,33GHz, MSI GTX 670 OC (TwinFrozr IV), DDR2 1066 A-data 8Gb, Seagate Barracuda 7200.12 2000GB, Kingston 240GB SSD, Gigabyte EP35-DS4, MSI OPTIX G273QF , Logitech G502 Proteus Spectrum
Notebook: Sony VAIO CW Series (VPC-CW1S1E/B) / LENOVO Legion 5 Pro 16ACH6H Stingray White || Mobil: Samsung Galaxy S21 FE || Auto: Audi S5 Sportback
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 25.11.07
Prihlásený: 02.07.21
Príspevky: 101
Témy: 21 | 21
Bydlisko: Bratislava
Napísal autor témyOffline : 02.07.2021 12:35 | Regex replace

Ďakujem veľmi pekne, poskúšam, pohrám sa s tým. Ďakujem za vysvetlenie a objasnenie pojmov. :D
Ja s RegEx nie som až tak veľký kamarát, zatiaľ. Musím si spraviť čas a prejsť si nejaký qalitný tutoriál.

Privítam tipy na nejaké qalitné tutoriály, môžu byť aj v angličtine, aj keď radšej by som sk/cz.

Vďaka.


Offline

Správca fóra
Správca fóra
Regex replace

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava
NapísalOffline : 02.07.2021 13:40 | Regex replace

MTK píše:
Kód:
(123(\n[^0-9]+)+(kapusta))+
Toto ale nenajde kapustu hned za 123, takze treba dat prec \n a + z prvej vnorenej zatvorky, cize zjednodusene: (123[^0-9]+)kapusta a potom nahradit kapustu za kel je mozne pomocou $1kel


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Regex replace

Registrovaný: 01.10.06
Prihlásený: 17.07.25
Príspevky: 6561
Témy: 15 | 15
Bydlisko: Bratislava
NapísalOffline : 02.07.2021 14:53 | Regex replace

Mas pravdu, ani som si to nevsimol, ked som to robil


_________________
PC: Intel Q6600@3,33GHz, MSI GTX 670 OC (TwinFrozr IV), DDR2 1066 A-data 8Gb, Seagate Barracuda 7200.12 2000GB, Kingston 240GB SSD, Gigabyte EP35-DS4, MSI OPTIX G273QF , Logitech G502 Proteus Spectrum
Notebook: Sony VAIO CW Series (VPC-CW1S1E/B) / LENOVO Legion 5 Pro 16ACH6H Stingray White || Mobil: Samsung Galaxy S21 FE || Auto: Audi S5 Sportback
 [ Príspevkov: 6 ] 


Regex replace



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

Regex ?

v Backend

0

445

12.07.2012 9:34

d0.0b

V tomto fóre nie sú ďalšie neprečítané témy.

regex

v Backend

2

397

08.02.2015 23:24

esso82

V tomto fóre nie sú ďalšie neprečítané témy.

MySQL REGEX

v Databázy

2

467

20.06.2013 16:16

Punker661

V tomto fóre nie sú ďalšie neprečítané témy.

regex a diakritika

v Backend

10

3008

08.03.2010 20:05

Ďuri

V tomto fóre nie sú ďalšie neprečítané témy.

Replace text

v Frontend

5

581

28.05.2012 13:49

xxx9955

V tomto fóre nie sú ďalšie neprečítané témy.

Replace Textu

v Backend

12

740

05.08.2009 9:52

p360t

V tomto fóre nie sú ďalšie neprečítané témy.

Pomoc s regex-om

v Backend

1

303

13.04.2013 9:10

BX

V tomto fóre nie sú ďalšie neprečítané témy.

PHP replace help

v Backend

4

731

13.04.2008 19:31

Ded'leg

V tomto fóre nie sú ďalšie neprečítané témy.

Replace Text on web

v Frontend

2

553

28.03.2009 12:43

Frees

V tomto fóre nie sú ďalšie neprečítané témy.

Regex - iba cisla a desatinna bodka

v Frontend

9

976

24.04.2019 10:28

neopagan

V tomto fóre nie sú ďalšie neprečítané témy.

string.replace na viac riadkoch nefunguje

v Frontend

11

802

22.03.2011 14:50

camo

V tomto fóre nie sú ďalšie neprečítané témy.

Invalid system disk replace the disk and press any key

v Windows

5

944

26.04.2008 6:20

mig07

V tomto fóre nie sú ďalšie neprečítané témy.

"Search and Replace" Shell skript

v Ostatné

1

585

13.06.2011 19:03

Ďuri



© 2005 - 2026 PCforum, edited by JanoF