Regularni izrazi - kako?

poruka: 22
|
čitano: 6.312
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Regularni izrazi (i padeži)?

 

Prvo moram reći da mi je ovo potpuno nepoznato područje.

 

No pitam sebe i Vas, mogu li nekako s regularnim izrazima zamijeniti određene riječi, 

no ne samo njih, već tim riječima dati i nastavke u padežima i licima 

 

da ne pišem 

<from="naučni" to="znanstveni" />

<from="naučno" to="znanstveno" />

<from="naučna" to="znanstvena" />

 

nego nešto tipa

 

<from="naučni, -a, -u -oj -om...." to="znanstveni -a, -u -oj -om" />

 

Pomozite mi, molim vas.

 

 

 

Isto tako opazio sam na netu dok sam gledao za to da postoji nešto tipa

gr(a|e)y

 

pa onda zamijeni gray u grey? ili?

zna li možda kada treba biti gray a kada grey? | to bih želio napraviti sa neko|netko  

 

Poruka je uređivana zadnji put pon 30.3.2015 19:26 (ameo).
 
0 0 hvala 0
12 godina
offline
Regularni izrazi - kako?

Probaj sa Notepad++ zamijeniti riječi, jedino mi to pada na pamet

 

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Regularni izrazi - kako?

ne, ne ne i ne. Notepad ne dolazi u obzir.

ovo mora biti dio programa koji ispravlja riječi onako kako mu kažem.

(on to već i radi, ali želim proširiti kombinacije i nadao sam se da mi ovo može pomoći)

Poruka je uređivana zadnji put pon 30.3.2015 19:29 (ameo).
 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Regularni izrazi (i padeži)?

regex: (naučn)(i|a|u|oj|om)

zamjena: znanstven$2

15 godina
neaktivan
offline
Regularni izrazi - kako?

da li se i toj zamjeni dodaju nastavci?

 

možeš li mi napisati puni primjer da radim po tom templateu?

 

a što je sa ovim gr(a|e)y?

Poruka je uređivana zadnji put pon 30.3.2015 21:11 (ameo).
 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Regularni izrazi - kako?

Nastavci se hvataju u drugoj capturing grupi pa se bez promjene prenose u rezultat korištenjem backreference $2 u izrazu za zamjenu. Testiraj u ovom online alatu pa vidi da li ti odgovara.

 

Inače sam primijetio da mi zamjena ne radi dobro ako riječ počinje velikim slovom. Za taj slučaj će ti trebati drugi prolaz: (Naučn)(i|a|u|oj|om) -> Znanstven$2

15 godina
neaktivan
offline
Regularni izrazi - kako?

ne kužim taj regexe - što gdje upisat?

 

znači li to da ću morati raditi duplo, i sa malim i sa velikim slovima?

 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Regularni izrazi - kako?

Za case insensitive izraz treba postaviti flag i, pa će ti vjerojatno onda raditi i za mala i za velika slova. 

15 godina
neaktivan
offline
Re: Regularni izrazi - kako?

kako se postavlja taj flag?

14 godina
neaktivan
offline
Regularni izrazi - kako?

U većini jezika, nakon izraza dodaš i ili postaviš dodatni parametar u funkciji, ili u online editoru samo staviš kvačiću kod ignoriranja veličine slova. Neda mi se detaljno čitati da otkrijem u kojem jeziku ti treba. 

 

Ali ako googlaš brzo ćeš naći riješenje. 

 
0 0 hvala 0
15 godina
neaktivan
offline
Regularni izrazi - kako?

\i je modifier za velika i mala slova 

 

 

mogu li ikako dodavati određena slova rječima koje želim kroz ovo?

 

npr. da uspeh bude uspjeh, tj. da se automatski doda slovo j u usp*eh - pesnik -> p*j*esnik?

 

 

hoću nešto - ne znam kako
Poruka je uređivana zadnji put pet 3.4.2015 16:59 (ameo).
 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Regularni izrazi - kako?

Za konkretnu zamjenu uspeh ⇒ uspjeh ti ne treba regularni izraz, dovoljan je običan search/replace. Ako baš mora na tvoj način onda koristi regex uspeh i zamjenu uspjeh.

 

Regex ti ne može pomoći da u jednom prolazu kroz tekst sve ekavske varijante zamijeniš u ijekavski oblik.

15 godina
neaktivan
offline
Regularni izrazi - kako?

što sam krivo napravio?

ništa mi se ne mijenja

 

<RegEx find="(historijsk)(e|i|a|o|u|om|oj)/i" replaceWith="povijesn$2/i"/>

hoću nešto - ne znam kako
 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Regularni izrazi - kako?

Gore si napisao da ti je case-insensitivity uključuje \i, a u izrazu koristiš/i.

 

Čak i da ga napišeš pravilno neće ti pomoći jer modifikator \i nema nikakvu funkciju u replaceWith. U što treba zamijeniti riječ izvornika "historijSKI"?

 

Radi dva prolaza kako sam ti preporučio, ili umjesto replaceWith izraza koristi funkciju za zamjenu (ako to tvoj alat podržava), ili googlaj "regex replace preserve case".

15 godina
neaktivan
offline
Regularni izrazi - kako?

nažalost prvi put radim s tim. 

 

Kada sam stavio \i program mi je izbacivao grešku, pa reko, mora da je /i.

No očito nije.

 

 

našao sam ovaj primjer:
<RegExfind="(\b[Cc]erca|\b[Ee]ncima|\b[Dd]ebajo|\b[Dd]etrás|\b[Dd]elante)(\s)mío"replaceWith="$1 de mí" />

<RegExfind="(\b[Cc]erca|\b[Ee]ncima|\b[Dd]ebajo|\b[Dd]etrás|\b[Dd]elante)(\s)tuyo"replaceWith="$1 de ti" />

 

da li ovdje čovjek zamjenjuje riječi sa velikim i malim slovima pomoću uzastopnog pisanja Cc npr.?

 

ili mi želiš reći da mi nema druge pomoći, nego raditi i za velika slova? :(

Nadao sam se da neće doći do toga, jer je to dupli posao.

(p.s. pa piše ti u primjeru u što ga mijenjam - povijesni)

hoću nešto - ne znam kako
 
0 0 hvala 0
15 godina
neaktivan
offline
Regularni izrazi - kako?

Kako da ovo isključim?

 

Evo, imam npr. ovu riječ u regex:

 

  <RegEx find="(len)(o|a|u|om|ima)" replaceWith="lijen$2"/>

 

 

i sve bi bilo lijepo krasno, da ne dolazi do ovoga:

 

ja upišem  malena - on meni kaže malijena

ja upišem  staklena - on meni kaže staklijena

 

što mi je činiti da se navedeno odnosi samo na tu riječ, 

a ne i na ostale koje ju sadržavaju?

hoću nešto - ne znam kako
 
0 0 hvala 0
15 godina
neaktivan
offline
Re: Regularni izrazi - kako?
ameo kaže...

Kako da ovo isključim?

 

Evo, imam npr. ovu riječ u regex:

 

  <RegEx find="(len)(o|a|u|om|ima)" replaceWith="lijen$2"/>

 

 

i sve bi bilo lijepo krasno, da ne dolazi do ovoga:

 

ja upišem  malena - on meni kaže malijena

ja upišem  staklena - on meni kaže staklijena

 

što mi je činiti da se navedeno odnosi samo na tu riječ, 

a ne i na ostale koje ju sadržavaju?

 "\b(len)....

\b matcha kraj/početak riječi

 

15 godina
neaktivan
offline
Regularni izrazi - kako?

mogu li ikako reći regexu - promijeni mi sve riječi, ali određene ne diraj

npr:

 

<RegEx find="nišu" replaceWith="niraju" />

ali nemoj mijenjat' : sitnišu

hoću nešto - ne znam kako &#187; story of my life
 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Regularni izrazi - kako?

Probaj s negative lookbehind

 

(?<!\bsit)nišu

15 godina
neaktivan
offline
Re: Regularni izrazi - kako?

kada to stavim, ne mijenja mi uopće ništa što treba.

hoću nešto - ne znam kako &#187; story of my life
11 godina
neaktivan
offline
Re: Regularni izrazi - kako?

Testiraj regex na ovoj stranici da vidiš jesi li ga dobro prepisao:

 

Text: sitnišu nišu abcsitnišu abcnišu

Pattern: (?<!\bsit)nišu

Replacement: niraju

 

Result: sitnišu niraju abcsitniraju abcniraju

 

Ako radi, moguće je da tvoj regex engine ne podržava negative lookbehind, provjeri u ovoj tablici.

Poruka je uređivana zadnji put pon 27.7.2015 21:27 (Bobobo-bo Bo-bobo).
15 godina
neaktivan
offline
Regularni izrazi - kako?

Na kraju je ispralo da je ovako: 

<RegExfind="(?&lt;!sit)nišu"replaceWith="niraju" />

hoću nešto - ne znam kako &#187; story of my life
 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice