Naučit se SQL Naučit se SQL
Pouze tento týden až 80% sleva na SQL jazyky
Zamiluj si programování! Až 80 % bodů na prémiový obsah zdarma. Více informací

Diskuze: Dokument Word - automatické formátování podle regulárního výrazu

Software Microsoft Office a kancelářské aplikace Dokument Word - automatické formátování podle regulárního výrazu American English version English version

Aktivity (1)
Avatar

Člen
Avatar
:6.9.2018 22:34

Ahoj,
řeším takový na první pohled jednoduchý problém, ale nemůžu nikde najít žádné řešení. Mám několik .docx dokumentů, každý kolem 150 stran. Potřeboval bych najít všechny řádky, které mají formát

(text): (text)\n

a na část před a po dvojtečce použít odlišné formátování - ideálně formou stylů, aby bylo možné formát popř. měnit. Dvojtečka patří ještě do první části. Takových řádků je 98%, nikde jinde dvojtečka použitá není.

Představu mám asi takovou, že zadám požadované formátování a regulární výraz pro první část řádku tj. asi něco jako

^.*?[:]$

a to samé pro druhou část. Nějaké nápady?
Díky.

 
Odpovědět 6.9.2018 22:34
Avatar

Člen
Avatar
:6.9.2018 22:43

Doplnění: První by se musel spustit výraz pro druhou část tj.

[:].*?$

a poté až první:

^.*?[:]

(bez dolaru na konci - chyba)

 
Nahoru Odpovědět 6.9.2018 22:43
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:11.9.2018 10:14

Ja byt tebou, tak se na reg. vyraz vykaslu a pouziji vyhledavani 1 znaku, neco jako v php

pos = strpos("(", str,0); if (pos<0) {return;}
pos = strpos(")", str, pos); if (pos<0) {return;}
pos = strpos(":", str, pos); if (pos<0) {return;}
pos = strpos("(", str, pos); if (pos<0) {return;}
pos = strpos(")", str, pos); if (pos<0) {return;}

A pokud se dostanes az sem, tak tam takova kombinace existuje.

Nevim, jak ve wordu / VBA, ale v js/php by se to psalo asi takto

preg_replace("~\(.*?\)\:\(.*?\)\n~", "$1:$2\n", $str) // psis jsem asi zmotal js a php dokupy :)
str.replace(/\(.*?\)\:\(.*?\)\n/gm, "$1:$2\n")

google = vba reg. vyrazy
google = reg expression vba

=PREG_REPLACE(„^(.*)\s(.*)“;“$2 $1″;A1),  (asi excel)

Ono by mozna bylo fajn, kdyby jsi napsal priklad takoveho textu, 2-3 slova, 2-3 radky.

Nevim, zda spravne chapu, ceho chces docilit.
Rekneme, ze hledas radek, kde je text rozdelen dvojteckou

^.*?[:].*?\n|$
  • od zacatku ^ hledej, dokud nenarazis na :
  • a za ni vezmi cokoliv, dokud nenarazis na novy radek \n nebo konec bloku $

Otazkou je, zda VBA umi vyhledavat pomoci otazniku '?', ktery rika stopka. Kdyz ne, pak by to muselo byt spis

^[^:]*[:][^\n]*
  • hledej od zacatku cokoliv jineho nez dvojtecku
  • pak hledej dvojtecku
  • hledej cokoliv, co neni \n

Pokud ^ v hranate zavorce je ovsem ve VBA negace jako jinych jazycich.
Mozna by bylo dobre to jenom stylove zvyraznit, nejdriv. Nez tam neco smazes.
A chtelo by to fakt ten vzorek, pripadne primo vba kod, ktery mas s tim, ze misto souboru tam das testovaci string. Aby stacilo udelat copy-paste spustit to. Jako, ze by se mi chtelo googlit a zjistovat, jak se to pise ve VBA, to fakt nee. A pak jeste resit samotny reg. vyraz.

Snad ti neco z tohoto nejak pomuze.

Editováno 11.9.2018 10:15
 
Nahoru Odpovědět 11.9.2018 10:14
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.