Forum » Programiranje » Regexp izraz za filtriranje imen datotek
Regexp izraz za filtriranje imen datotek
GupeM ::
Lahko nam pa predstavis kak svoj primer, ki potrdi to kar pravis, da bo tvoja koda hitrejsa od regexa. :)
In da je to sprogramiral hitreje kot bi napisal en regex ...
Ja, če o regexih nimaš pojma in nimaš niti želje da bi se karkoli naučil, potem zagotovo hitreje sprogramiraš.
Invictus ::
Če nimaš želje, potem ti res ne preostane drugega kot dakvačkaš v SQLu .
"Life is hard; it's even harder when you're stupid."
http://goo.gl/2YuS2x
http://goo.gl/2YuS2x
BigWhale ::
mr_chai ::
Če se ukvarjaš s tekstovni podatki, je uporaba regex obvezna. Vse ostalo je kompliciranje...
To pa niti slučajno ni res. Sj je fajn, da se s kuallom mal pohebavata v glavo, ampak npr. za parsanje HTMLja, JSONa, XML-a ali katerega koli neregularnega jezika (programski jeziki npr..) je regex neuporaben. Mogoče samo za delčke posameznih stringov. Tehnik parsanja je pa kar nekaj znanih in uveljavljenih. Imaš tudi že libe, ki ti na podlagi dane gramatike že sami spišejo parser zanjo. To je pa uporabno pri implementaciji programskih jezikov, rule enginov, v NLP itd...
Tako, da trditi, da nekdo dela samo "simpl" stvari, ker ne uporablja regexov, je nesmisel. Si že kdaj napisal interpreter ali compiler za svoje jezik ? Nisi ? Ja pol pa ti še nič kompleksnega nisi delal....
XyNOBvxWVJ ::
Zakaj bi za parsanje json in xml hotel sploh uporabljati regex?
A za iskanje poenostavljenih parov v smislu <(.*?)>(.*?)<\/(.*?)> in \"(\w+\)"\s*\:\s*\"([^\"])*\" ali kaj?
In potem iskati matche in capture? Zakaj, hudiča, bi to kdo delal na tak način? Čeprav nemogoče ni, obstajajo boljša orodja za to.
In sql (ansi sql, t-sql ali pl/sql) načeloma ni med njimi, ker ima spet svoj namen.
Saj regex ni Panacea in ima svojo omejeno vlogo, če moramo že o tem razpravljati, ker slučajno komurkoli ni jasno, je vsa tema izguba časa.
In zakaj bi sploh pisal nekaj interpreter ali compiler za svoj jezik izven akademskih okvirjev?
Za html in leaching je pa kar v redu, recimo scrappanje povezav, besedila in resursov (ali sklicev nanje), odstranjevanje markupa itn.
A za iskanje poenostavljenih parov v smislu <(.*?)>(.*?)<\/(.*?)> in \"(\w+\)"\s*\:\s*\"([^\"])*\" ali kaj?
In potem iskati matche in capture? Zakaj, hudiča, bi to kdo delal na tak način? Čeprav nemogoče ni, obstajajo boljša orodja za to.
In sql (ansi sql, t-sql ali pl/sql) načeloma ni med njimi, ker ima spet svoj namen.
Saj regex ni Panacea in ima svojo omejeno vlogo, če moramo že o tem razpravljati, ker slučajno komurkoli ni jasno, je vsa tema izguba časa.
In zakaj bi sploh pisal nekaj interpreter ali compiler za svoj jezik izven akademskih okvirjev?
Za html in leaching je pa kar v redu, recimo scrappanje povezav, besedila in resursov (ali sklicev nanje), odstranjevanje markupa itn.
Zgodovina sprememb…
- spremenilo: XyNOBvxWVJ ()
Ahim ::
Če pa kdo išče malo zabave, pa tukaj regex križanke.
https://regexcrossword.com/
Kar fina zadeva za malo možgane razgibat.
Super zadeva za popostritev popoldneva ("navadne" do Experienced; zdaj sem na tistih v "posebnih" kategorijah) ,najlepsa hvala!
GupeM ::
Ja, če o regexih nimaš pojma in nimaš niti želje da bi se karkoli naučil, potem zagotovo hitreje sprogramiraš.
To je ful odvisno od primera do primera. :> Velikrat je prej, ce gres regex studirat iz nule. Dokler ne gres parsat HTMLja z regexom je vse kul. :>
Zakaj bi kdorkoli parsal HTML z regexi? Za to obstajajo dom in sax parserji. Je pa regex izjemno uporaben, če hočeš ugotoviti, ali neka vrednost taga v HTML-ju ustreza nekemu patternu. Tako da kombinacija dom/sax parser + regex je lahko rešitev.
Sicer pa:
https://stackoverflow.com/questions/173...
XyNOBvxWVJ ::
Za dejansko validacijo xml imaš xsd in dtd scheme (in primerno orodje, ki interpretira te sheme in preverja pravilnost xml dokumenta), kjer formalno določiš strukturo markupa z možnimi vrednostmi atributov. Ampak vidim, da je tema že fino derailala.
GupeM ::
XyNOBvxWVJ je izjavil:
Za dejansko validacijo xml imaš xsd in dtd scheme (in primerno orodje, ki interpretira te sheme in preverja pravilnost xml dokumenta), kjer formalno določiš strukturo markupa z možnimi vrednostmi atributov. Ampak vidim, da je tema že fino derailala.
Seveda. In kaj v xsd schemi uporabiš, če želiš preveriti ali atribut res vsebuje neko vrednost točno določene oblike? SQL?
galu ::
Načeloma imam z regexi 2 težavi:
- robni primeri in razlike v interpretaciji: https://stackoverflow.com/questions/780...
- časovna zahtevnost ni zlahka predvidljiva: https://blog.cloudflare.com/details-of-...
- robni primeri in razlike v interpretaciji: https://stackoverflow.com/questions/780...
- časovna zahtevnost ni zlahka predvidljiva: https://blog.cloudflare.com/details-of-...
Tako to gre.
kuall ::
v določenih primerih lahko uporabil regex. Zadevo raje napišeš v 375 vrsticah Pythona, kot pa da bi uporabil enostaven enovrstičen regex.
malo pretiravaš in nabijaš na pamet ampak če bi šli gledat konkreten primer bi videli, da je 20 vrstic navadne kode bolj berljive kot 1 vrstica kriptiranega regexa. ni vedno nujno manj vrstic bolje, ponavadi je, ne pa vedno.
prejle sem malo googlal o regexih in videl primere, kako je en regex sesul celo server. to je pa to, ko ne veš, kaj delaš. z regexi je ponavadi tako, da ne veš, kaj delaš, posebej če so malo bolj komplicirani, v glavnem da dela. jaz rad vem, kaj delam.
en primer malo daljšega regexa:
(^\+?)(31)(\s?)(0?)([0-9]{1,3})(\s?)([0-9]{6,8}$)
beda. človeški možgani niso narejeni za takole sranje.
HotBurek ::
Hej kuall, en lep nedeljski izziv zate: v C# sprogramiraj parser, ki nadomešča (^\+?)(31)(\s?)(0?)([0-9]{1,3})(\s?)([0-9]{6,8}$) regex.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
XyNOBvxWVJ ::
Seveda. In kaj v xsd schemi uporabiš, če želiš preveriti ali atribut res vsebuje neko vrednost točno določene oblike? SQL?
Odvisno od vrednosti, ali gre za numerično, zalogovno, časovno ali prosto vneseno. V primeru prosto vnesenih je regex najbolj priročen in standardiziran, za ostale ni zaželeno, so lahko tudi lokalizirane. Kaj ima SQL s tem, ne vem, to se lepo vidva s kuallom pomenita.
beda. človeški možgani niso narejeni za takole sranje.
So, so, brez skrbi. Že dolgo. Tada. Še več, celo standardizirano je. Še igraš se lahko tukaj, do Experienced moraš prit v 15 minutah, ajde, 30, ker je nedelja, dejansko pa 5.
Zgodovina sprememb…
- spremenilo: XyNOBvxWVJ ()
HotBurek ::
Še glede zgornega regex-a: zgleda, da parsa/označuje nizozemske številke.
Kako ta regex zamenjat z C#/SQL/whateva rešitvijo, ki bo bolj učinkovita, je pa drugo vprašanje.
Kako ta regex zamenjat z C#/SQL/whateva rešitvijo, ki bo bolj učinkovita, je pa drugo vprašanje.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
XyNOBvxWVJ ::
Kako ta regex zamenjat z C#/SQL/whateva rešitvijo, ki bo bolj učinkovita, je pa drugo vprašanje.
Heh,
C#: System.Text.RegularExpressions.Regex.IsMatch(expression, pattern, regexOptions, matchTimeout)
Java: java.util.regex.Pattern.matches(pattern, content)
PL/Sql: REGEXP_LIKE (expression, pattern [, match_parameter ])
T-SQL: LIKE (ni regex!)
Zgodovina sprememb…
- spremenilo: XyNOBvxWVJ ()
HotBurek ::
Ja, to so že lepe rešitve. A kako izgleda tista, kjer regex-a sploh ne uporabiš oz. spišeš čisto svoj check?
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
BigWhale ::
GupeM ::
XyNOBvxWVJ ::
Je govora o parsanju html kode za ekstrakcijo podatkov ali govorita o validaciji html?
kuall ::
GupeM ::
XyNOBvxWVJ je izjavil:
Odvisno od vrednosti, ali gre za numerično, zalogovno, časovno ali prosto vneseno. V primeru prosto vnesenih je regex najbolj priročen in standardiziran, za ostale ni zaželeno, so lahko tudi lokalizirane. Kaj ima SQL s tem, ne vem, to se lepo vidva s kuallom pomenita.
Seveda je odvisno. Ampak a se ti ne zdi logično da sem mislil prosto vnešeno vrednost?
Sicer pa scheme ne rešijo vsega in moraš v programu vseeno izluščiti podatke iz taga. Primer:
<speed>KH100</speed> <speed>MH100</speed> <speed>K100</speed> <speed>MS100</speed>
Sicer slab XML, ampak iz takega najlažje s parserjem poiščeš speed tag, nato pa z regexom izluščiš enoto in vrednost. Torej km/h, mph, knots, m/s.
XyNOBvxWVJ ::
Tega nima kaj reševati program ampak morajo biti podatki v xml normalizirani, se pravi, vsaka vrednost v svojem 'polju'.
Si že dolgo v I/T industriji?
Si že dolgo v I/T industriji?
GupeM ::
XyNOBvxWVJ je izjavil:
Tega nima kaj reševati program ampak morajo biti podatki v xml normalizirani, se pravi, vsaka vrednost v svojem 'polju'.
Si že dolgo v I/T industriji?
Bi morali biti. Ampak včasih podatke dobiš od drugod, kjer pač nimaš vpliva na to kaj dobiš.
Kaj je pa važno, če sem že dolgo v IT industriji?
XyNOBvxWVJ ::
Ja, še nisem naletel na kaj takega, menda nikdar (ker bi si zapomnil), je pa res, da imam (ne)srečo, da sem primoran sodelovati v zelo purističnih krogih in to potem pusti posledice, hočeš ali nočeš.
Zgodovina sprememb…
- spremenilo: XyNOBvxWVJ ()
zmist ::
regexa se ne da naučit.
Lahko samo bolj ali manj uporablajš dokumentacijo .
PCRE? POSIX? .NET? x editor?
Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
Modernizirana:
Some people, when confronted with a problem, think "I know, I'll use xml and regular expressions." Now they have a lot of problems.
Zgodovina sprememb…
- predlagal izbris: GupeM ()
Invictus ::
malo pretiravaš in nabijaš na pamet ampak če bi šli gledat konkreten primer bi videli, da je 20 vrstic navadne kode bolj berljive kot 1 vrstica kriptiranega regexa.
No, ne pretiravaj...
Tudi 20 vrsticneke kode je lahko blazno neberljvih, ali pa blazno zblojenih... Nič hujšega, ko vidim cel kup else if stavbkov, ko se nekaj preverja, namesto regexa.
prejle sem malo googlal o regexih in videl primere, kako je en regex sesul celo server. to je pa to, ko ne veš, kaj delaš. z regexi je ponavadi tako, da ne veš, kaj delaš, posebej če so malo bolj komplicirani, v glavnem da dela. jaz rad vem, kaj delam.
Vlečeš ven robne primere...
Tudi tvoja koda lahko sesuje server, če jo napačno napišeš in zaganjaš v napačnem spacu...
en primer malo daljšega regexa:
(^\+?)(31)(\s?)(0?)([0-9]{1,3})(\s?)([0-9]{6,8}$)
beda. človeški možgani niso narejeni za takole sranje.
To sploh ni kompliciran regex...
Tole je:
https://www.perlmonks.org/bare/?node_id...
"Life is hard; it's even harder when you're stupid."
http://goo.gl/2YuS2x
http://goo.gl/2YuS2x
BigWhale ::
prejle sem malo googlal o regexih in videl primere, kako je en regex sesul celo server. to je pa to, ko ne veš, kaj delaš. z regexi je ponavadi tako, da ne veš, kaj delaš, posebej če so malo bolj komplicirani, v glavnem da dela. jaz rad vem, kaj delam.
Ja, to je nekaj kar si ti lahko zgodi SAMO z regexi in nikjer drugje. Seveda.
Lej, ce ne znas uporabljat kladiva, ga ne uporabljal in se naprej zabijaj zeblje s kombinirkami. Sam ne nam zdaj razlagat, da je kladivo zanic, ker se z njim ful slabo odpira konzerve.
kuall ::
dolge regexe je težko debuggirat. vse kar je težko debuggirat je zanič stil programiranja. torej so dolgi regexi zanič.
kuall ::
Lej, ce ne znas uporabljat kladiva, ga ne uporabljal in se naprej zabijaj zeblje s kombinirkami.
Bla bla.
http://www.ijac.net/en/article/doi/10.1...
recent research has found that regular expressions are hard to understand, hard to compose, and error-prone
https://chbrown13.github.io/dcbrow10/fi...
regular expression bugs are not trivial problems as they take more
time and more lines of code to fix compared to general bugs
Če ti nek dolg regex ne dela ga debuggiraš tako, da ga najprej prevedeš v človeški jezik, potem na novo napišeš v razumljivem jeziku in prevedeš nazaj v regex? Al kako?
V tem primeru je zabijal žeblje s kombinirkami:
https://stackstatus.net/post/1477106246...
Napisal je čist razumen regex ampak kako bi lahko predvidel, da regex mašina deluje tako neumno počasi v nekterih primerih?
Za tale primer je bil samo regex sam po sebi kriv, ne pa nesposoben programer. Kolikor je bil kriv programer je bilo samo za to, ker se je odločil programirati z regexi.
Regex ni nujen tool. Če ne boš nekje uporabil regex to ne pomeni, da zabijaš žeblje s kombinirkami. Regex je eksotika.
Itak pa je ta filozofija "uporabi pravo orodje za pravo nalogo" precenjena. Ker potem te sili, da si povprečen v 100 stvareh in v nobeni vrhunski, da ja ne boš zamudil kakšnega orodja, ko bi bil lahko vrhunski v 10 stvareh. Moja filozofija je, da je treba stvari dobro razumeti v programiranju in tudi v življenju, ne pa nek bullshit, ki se sicer lepo sliši "uporabi pravi tool".
Če bi regex dobro razumel že vidim, kakne grde špagete bi začel producirati, zato se raje sploh ne spuščam v to. :D
GupeM ::
Kaj je s tabo narobe? Ti s kladivom šraufaš šraufe, s kosilnico asfaltiraš ceste in z mikrovalovko programiraš? Al kar za vse to uporabljaš pralni stroj? Ker, zakaj bi se učil kup orodji, če pa je bolje poznati enega pa s tistim vse narest?!?!
c3p0 ::
Imaš online toole, ki daljši regex razbijejo na smiselne dele in ga je nato precej lažje razumet. V praksi pa se v 99% uporabljajo enostavni regexi.
Invictus ::
Dostikrat, če gre recimo za kake zblojene loge, regexe celo gnezdiš.
Razbiješ na manjše smiselne dele, ki jih potem še naprej obdelaš. Z regexi .
Če so pa logi dobro strukturirani, kar je vsaj v Sloveniji nemogoče doseči nek standard v firmi, niti arhitekt softvera ponavadi ne vidi smisla v tem, pa zna biti problem...
Sam lahko dam primer, ko sem DB2 audit loge spravil v bazo z enim simple regexom. Ker so bili dobro strukturirani že v osnovi...
Razbiješ na manjše smiselne dele, ki jih potem še naprej obdelaš. Z regexi .
Če so pa logi dobro strukturirani, kar je vsaj v Sloveniji nemogoče doseči nek standard v firmi, niti arhitekt softvera ponavadi ne vidi smisla v tem, pa zna biti problem...
Sam lahko dam primer, ko sem DB2 audit loge spravil v bazo z enim simple regexom. Ker so bili dobro strukturirani že v osnovi...
"Life is hard; it's even harder when you're stupid."
http://goo.gl/2YuS2x
http://goo.gl/2YuS2x
Zgodovina sprememb…
- spremenil: Invictus ()
BigWhale ::
SeMiNeSanja ::
O smiselnosti Regexp vs. SQL lahko debatiraš, ko dejansko imaš opravka z podatki, kateri se nahajajo ali pa jih boš prenesel v SQL bazo.
Debata pa je popolnoma brezpredmetna, če ni nobene SQL baze nikjer v scenariju. Ko imaš text input in text output.
Če meni ena aplikacija generira loge, ki izgledajo tako:
in jih moram predelati v obliko, katero lahko kopiram v Excel:
.... si bom šel nameščati SQL bazo in si razbijal glavo, kako za vraga bi to naredil z SQL-on?
Sicer nisem noben programer, ampak tako osnovnošolsko Python kodo še celo jaz uspem nekako spacat:
Torej... zakaj bi se moral ogniti tistemu Regexp, če mi na zelo kratek in jedernat način definira kaj iščem v vrstici?
Če pa gremo v čisti urejevalnik texta... kjer moram iz pdf datoteke spraskat določene podatke in jih postaviti v točno določeni vrstni red za kopiranje v drug dokument - bi pa presneto rad videl, kako bi to nek frajer dela z SQL (ob tem, da bo samo za to šel nameščat SQL bazo?).
.. ob tem, da mi to naredita dva Regexp izraza v text editorju:
In ja - nisem noben expert za Regexp - pravi expert bi najbrž še 3x bolj optimiziral take izraze. A za mene to zadošča - na nivoju 'uporabnika'.
Kuall pozablja, da svet ne obstaja več zgolj iz programerjev in tupih uporabnikov, ki komajda vedo, kje se prižge računalnik.
Obstaja množica uporabnikov, ki nismo programerji, a moramo izvajati določene manipulacije nad datotekami, katere presegajo nivo klasičnega search&replace v 'beležki'.
Ker smo prepuščeni sami sebi (no, še dobro, da nismo na milost in nemilost prepuščeni programerjem!), se pač znajdemo z orodji in znanji, ki so nam na voljo, da z čim manj muk dosežemo točno to, kar potrebujemo.
Ker nismo programerji, nas prav en drek zanima, kakšni neki parserji obstajajo in kaj vse bi se 'dalo' naresti, če bi bili 24/7 programerji. Imamo problem, rabimo rešitev... in jo 'spacamo'. Koga briga, če je +lepa', če je dovolj uporabna za naše potrebe. Koga briga, če bi se dalo izvesti z SQL - presneto, bo jutri en prišel naokoli pa rekel, da bi se lepše naredilo z Cobolom? Kaj pa potem SQL freak-i?
Že res, da je veliko podatkov v raznoraznih bazah, a še veliko več podatkov se valja po diskovjih v obliki čisto navadnih datotek - ob tem, da 99% računalnikov nima nameščene nobene SQL baze, ki bi jo lahko uporabil, če bi bil totalno zakrknjen SQL obsedenec.
Jaz lahko 'spacam' neko skriptico ki uporablja Regexp in jo dam nekomu v uporabo. Kaj boš pa z SQL? NAvodilo za uporabo začel z "Najprej si namesti eno od SQL baz...."? Ob tem, da si hotel zgolj spraskati par informacij iz neke text datoteke?
Ajmene......
Debata pa je popolnoma brezpredmetna, če ni nobene SQL baze nikjer v scenariju. Ko imaš text input in text output.
Če meni ena aplikacija generira loge, ki izgledajo tako:
================================================== Host Name : api.dropboxapi.com Port Number : 0 Query ID : 362B Request Type : Request Time : Response Time : 20.2.2021 0:48:41.086 Duration : Response Code : Ok Records Count : 3 A : CNAME : api.dropbox.com api-env.dropbox-dns.com AAAA : 2620:100:6023:19::a27d:4313 NS : MX : PTR : SRV : TEXT : Source Address : 2a01:260:4086:1100::135 Destination Address: 2a01:260:4086:1100::130 IP Country : ================================================== ================================================== Host Name : pop.gmail.com Port Number : 55048 Query ID : 4432 Request Type : A Request Time : 20.2.2021 0:48:41.187 Response Time : 20.2.2021 0:48:41.198 Duration : 10 ms Response Code : Ok Records Count : 2 A : 74.125.193.108 74.125.193.109 CNAME : AAAA : NS : MX : PTR : SRV : TEXT : Source Address : 192.168.111.135 Destination Address: 192.168.111.130 IP Country : ==================================================
in jih moram predelati v obliko, katero lahko kopiram v Excel:
api.dropboxapi.com AAAA 3 "" 2620:100:6023:19::a27d:4313 api.dropbox.com api-env.dropbox-dns.com pop.gmail.com A 2 "74.125.193.108 74.125.193.109"
.... si bom šel nameščati SQL bazo in si razbijal glavo, kako za vraga bi to naredil z SQL-on?
Sicer nisem noben programer, ampak tako osnovnošolsko Python kodo še celo jaz uspem nekako spacat:
with file_in: for line in file_in: line = re.sub(r'\n','',line) if re.search('^={50}$',line): continue elif re.search('^(.*?) *: (.*?)$',line): match = re.match('^(.*?) *: (.*?)$',line) parameter = match.expand(r'\1') vrednost = match.expand(r'\2') ... ...
Torej... zakaj bi se moral ogniti tistemu Regexp, če mi na zelo kratek in jedernat način definira kaj iščem v vrstici?
Če pa gremo v čisti urejevalnik texta... kjer moram iz pdf datoteke spraskat določene podatke in jih postaviti v točno določeni vrstni red za kopiranje v drug dokument - bi pa presneto rad videl, kako bi to nek frajer dela z SQL (ob tem, da bo samo za to šel nameščat SQL bazo?).
.. ob tem, da mi to naredita dva Regexp izraza v text editorju:
Find RegExp "(^\d{4,8})(-\d){0,1} (.*?) (\d{1,4},\d\d) (\w{3,4}) (\d{1,4},\d{4}) (\d{1,2},\d{2}) (\d{1,2},\d{2}) (\d{1,4},\d{4}) (EAN koda: \d{0,13}) {0,1} {0,3}$" Replace All "$1$2 - $3\t$4\t$5\t$6\t$7\t$8\t$11\t$9"
In ja - nisem noben expert za Regexp - pravi expert bi najbrž še 3x bolj optimiziral take izraze. A za mene to zadošča - na nivoju 'uporabnika'.
Kuall pozablja, da svet ne obstaja več zgolj iz programerjev in tupih uporabnikov, ki komajda vedo, kje se prižge računalnik.
Obstaja množica uporabnikov, ki nismo programerji, a moramo izvajati določene manipulacije nad datotekami, katere presegajo nivo klasičnega search&replace v 'beležki'.
Ker smo prepuščeni sami sebi (no, še dobro, da nismo na milost in nemilost prepuščeni programerjem!), se pač znajdemo z orodji in znanji, ki so nam na voljo, da z čim manj muk dosežemo točno to, kar potrebujemo.
Ker nismo programerji, nas prav en drek zanima, kakšni neki parserji obstajajo in kaj vse bi se 'dalo' naresti, če bi bili 24/7 programerji. Imamo problem, rabimo rešitev... in jo 'spacamo'. Koga briga, če je +lepa', če je dovolj uporabna za naše potrebe. Koga briga, če bi se dalo izvesti z SQL - presneto, bo jutri en prišel naokoli pa rekel, da bi se lepše naredilo z Cobolom? Kaj pa potem SQL freak-i?
Že res, da je veliko podatkov v raznoraznih bazah, a še veliko več podatkov se valja po diskovjih v obliki čisto navadnih datotek - ob tem, da 99% računalnikov nima nameščene nobene SQL baze, ki bi jo lahko uporabil, če bi bil totalno zakrknjen SQL obsedenec.
Jaz lahko 'spacam' neko skriptico ki uporablja Regexp in jo dam nekomu v uporabo. Kaj boš pa z SQL? NAvodilo za uporabo začel z "Najprej si namesti eno od SQL baz...."? Ob tem, da si hotel zgolj spraskati par informacij iz neke text datoteke?
Ajmene......
Pričujoče sporočilo je (lahko) oglasno sporočilo
- četudi na prvi pogled ni prepoznavno kot tako.
(Zdaj me pa obtožite prikritega oglaševanja, če morete!)
- četudi na prvi pogled ni prepoznavno kot tako.
(Zdaj me pa obtožite prikritega oglaševanja, če morete!)
XyNOBvxWVJ ::
> Jaz lahko 'spacam' neko skriptico ki uporablja Regexp in jo dam nekomu v uporabo.
To, ja. In tudi Windows Scripting podpira RegExp.
To, ja. In tudi Windows Scripting podpira RegExp.
Invictus ::
Regex se naučiš po potrebi...
Malo je mimo, da zavračaš uporabo le tega, saj kot je bilo že omenjeno, 99% jih je simple. Tudi v SQLu , kjer potem lažje definiraš kak boljši in bolj berljiv WHERE pogoj...
Je pač še eno orodje, ki ga uporabljaš, kadar ga rabiš...
AMpak, če pa delaš kak Seach/REplace na tekstu, je pa skoraj nepogrešljiv na dolgi rok...
Malo je mimo, da zavračaš uporabo le tega, saj kot je bilo že omenjeno, 99% jih je simple. Tudi v SQLu , kjer potem lažje definiraš kak boljši in bolj berljiv WHERE pogoj...
Je pač še eno orodje, ki ga uporabljaš, kadar ga rabiš...
AMpak, če pa delaš kak Seach/REplace na tekstu, je pa skoraj nepogrešljiv na dolgi rok...
"Life is hard; it's even harder when you're stupid."
http://goo.gl/2YuS2x
http://goo.gl/2YuS2x
c3p0 ::
SeMiNeSanja je izjavil:
O smiselnosti Regexp vs. SQL lahko debatiraš, ko dejansko imaš opravka z podatki, kateri se nahajajo ali pa jih boš prenesel v SQL bazo.
[snip]
Najprej preveriš, če avtor SW-ja, ki producira loge ni čisti imbecil in je dal možnost ali custom formata logov, kamor si sam izbereš format, ki ga bo lahko parsat, ali pa morda že native ponuja več tipov zapisa logov, od katerih je en CSV, TDV, ali kaj podobnega.
Zimonem ::
SQL in regex sploh nista primerljiva.
Eno je za strukturirane podatke drugi je Univerzalc.
Desci očitno dela problem notacija. Ampak tudi vi matematiki imamo operatorje namesto keywordow. Preprosto enačbo iz Boolove algebre zapiši a keywordi pa vidiš kako nerodna je zadeva.
Eno je za strukturirane podatke drugi je Univerzalc.
Desci očitno dela problem notacija. Ampak tudi vi matematiki imamo operatorje namesto keywordow. Preprosto enačbo iz Boolove algebre zapiši a keywordi pa vidiš kako nerodna je zadeva.
kuall ::
SeMiNeSanja: si čist narobe razumel, da je SQL alternativa RegEx :D Jao. Samo primer sem dal, kaj se ti bolj splača učit.
Regex je čist fajn za hitre hacke in če nisi programer ti bi znal cleo bolj prav priti kot SQL za razno iskanje po fajlih itd. Sql je res bolj za programerje. regex je uporaben, ne pravim da ni, samo ni pa neka huda škoda, če ga ne uporabljaš / se ga ne naučiš, je dostikrat bolje, da ga ne.
V SQL se uporablja % na veliko, včasih _, pol se pa hitro neha. to je tudi regex, ampak zelo enostaven. tudi hiter je regex v SQL, bolj kot substring. in to jaz s pridom uporabljam.
BigWhale: bla bla je bilo mišljeno kot: blefiraš z nekimi floskulami.
Regex je čist fajn za hitre hacke in če nisi programer ti bi znal cleo bolj prav priti kot SQL za razno iskanje po fajlih itd. Sql je res bolj za programerje. regex je uporaben, ne pravim da ni, samo ni pa neka huda škoda, če ga ne uporabljaš / se ga ne naučiš, je dostikrat bolje, da ga ne.
V SQL se uporablja % na veliko, včasih _, pol se pa hitro neha. to je tudi regex, ampak zelo enostaven. tudi hiter je regex v SQL, bolj kot substring. in to jaz s pridom uporabljam.
BigWhale: bla bla je bilo mišljeno kot: blefiraš z nekimi floskulami.
SeMiNeSanja ::
SeMiNeSanja: si čist narobe razumel, da je SQL alternativa RegEx :D Jao. Samo primer sem dal, kaj se ti bolj splača učit.
Zakaj se mi bolj splača učiti SQL, če nisem programer, podatke pa ne tlačim v SQL baze oz. ne posegam po njih izven orodij, ki so jih sprogramirali tisti, ki SQL obvladajo?
SQL sem rabil samo 1x, ko sem iz firbca naredil nekakšno osnovno php stran za vnos in izpis podatkov v MySQL bazo. Toliko da sem videl za kaj se gre.
(Preproste) Regexp izraze pa rabim praktično vsakodnevno!
Pričujoče sporočilo je (lahko) oglasno sporočilo
- četudi na prvi pogled ni prepoznavno kot tako.
(Zdaj me pa obtožite prikritega oglaševanja, če morete!)
- četudi na prvi pogled ni prepoznavno kot tako.
(Zdaj me pa obtožite prikritega oglaševanja, če morete!)
BigWhale ::
GupeM ::
SeMiNeSanja: si čist narobe razumel, da je SQL alternativa RegEx :D Jao. Samo primer sem dal, kaj se ti bolj splača učit.
Regex je čist fajn za hitre hacke in če nisi programer ti bi znal cleo bolj prav priti kot SQL za razno iskanje po fajlih itd. Sql je res bolj za programerje. regex je uporaben, ne pravim da ni, samo ni pa neka huda škoda, če ga ne uporabljaš / se ga ne naučiš, je dostikrat bolje, da ga ne.
V SQL se uporablja % na veliko, včasih _, pol se pa hitro neha. to je tudi regex, ampak zelo enostaven. tudi hiter je regex v SQL, bolj kot substring. in to jaz s pridom uporabljam.
BigWhale: bla bla je bilo mišljeno kot: blefiraš z nekimi floskulami.
Kaj ti bo SQL? Bolj se ti splača učit C. Z njim lahko narediš bazo, SQL parser in regex parser. Lahko pa tudi kaj drugega, ki bo nadomestilo tako SQL kot regexe. Medtem ko z SQL ne moreš narediti niti regex parserja, niti C-ja. Neuporabno sranje.
In kot sem že rekel. V enem do dveh dnevih se naučiš regexa toliko, da ga boš znal uporabiti za 99,9% primerov.
Koliko SQLa se boš naučil v dveh dnevih? Mogoče ga boš znal uporabiti za 7% primerov.
zmist ::
XyNOBvxWVJ je izjavil:
> Jaz lahko 'spacam' neko skriptico ki uporablja Regexp in jo dam nekomu v uporabo.
To, ja. In tudi Windows Scripting podpira RegExp.
Katero narecje? Vsak k* izumi neko svojo varianto, pa da je zgodba se bolj zabavna, potem se svojo "poenostavljeno" razlicico. Pa ne me narobe vzeti, uporabljam na veliko, bi bil pa zelo vesel, ce bi se vzelo pcre in se trescilo vse ostale implementacije v smeti.
In kot sem že rekel. V enem do dveh dnevih se naučiš regexa toliko, da ga boš znal uporabiti za 99,9% primerov.
That what she said . Zgoraj sem gledal malo primercke, pa nihce ne uporablja non greedy capturov, to je recimo ze zadeva, pri kateri se lahko fino ustrelis v koleno.
Zgodovina sprememb…
- predlagal izbris: GupeM ()
SeMiNeSanja ::
Zgoraj sem gledal malo primercke, pa nihce ne uporablja non greedy capturov, to je recimo ze zadeva, pri kateri se lahko fino ustrelis v koleno.
Ne vem katere primere si ti gledal - v obeh dveh 'odlomkih', ki sem jih jaz prilepil, je uporabljen non-greedy.
Drugače pa to s 'pohlepom' ugotoviš kar kmalu, če malenkost bolj resno/pogosto uporabljaš Regexp.
Pri zelo preprostem iskanju pa povečini gre tudi brez 'znanosti'.
Tako npr. 'traffic viewer' požarne pregrade (prikazuje loge v živo) omogoča, da vklopiš Regexp filter. Če uporabnik nima najmanjšega pojma o tem kaj je Regexp in iskalno okno vpiše "192.168.111.10" (brez narekovajev), bo zadeva ravno tako naredila to, kar je želel, kot če bi vpisal 'pravilni' Regexp izraz "^(?=.*192\.168\.111\.10).*$". Pri tej uporabi postane Regexp zares uporaben, ko hočeš izločati tiste log vrstice, ki te ne zanimajo. Se pa tu nisem še nikoli srečal z potrebo po non-greedy iskanju. Je že tako, da ima vsako področje uporabe neke svoje posebnosti...
Pričujoče sporočilo je (lahko) oglasno sporočilo
- četudi na prvi pogled ni prepoznavno kot tako.
(Zdaj me pa obtožite prikritega oglaševanja, če morete!)
- četudi na prvi pogled ni prepoznavno kot tako.
(Zdaj me pa obtožite prikritega oglaševanja, če morete!)
garamond ::
Regex se naučiš po potrebi... [...]Se zelo strinjam s tem. Mislim, da je zelo koristno znati (osnove) in jih uporabiti ob primerni priložnosti.
Je pač še eno orodje, ki ga uporabljaš, kadar ga rabiš...[...]
Še ne-programerski primer: na najbolj nepričakovano mesto uporabe Regexa sem enkrat naletel v InDesign-u (program za oblikovanje / postavljanje besedil - programerji ga ne uporabljajo - zato sem bil precej presenečen), v predlogi, ki je imela v stilih nastavljeno zamenjavo "m3" z "m3" (ali nekaj podobnega, šlo je za enoto, ki je bila pričakovana glede na vsebino).
Omenjam še eno varianto, za katero sem prepričan da je nisi poznal: GREP. Ta ima še simbole za Page Break, Beginning of paragraph, Copyright symbol in desetino podobnih xDXyNOBvxWVJ je izjavil:
> Jaz lahko 'spacam' neko skriptico ki uporablja Regexp in jo dam nekomu v uporabo.
To, ja. In tudi Windows Scripting podpira RegExp.
Katero narecje? Vsak k* izumi neko svojo varianto, pa da je zgodba se bolj zabavna, potem se svojo "poenostavljeno" razlicico. Pa ne me narobe vzeti, uporabljam na veliko, bi bil pa zelo vesel, ce bi se vzelo pcre in se trescilo vse ostale implementacije v smeti.
A parody of extremism is impossible to differentiate from sincere extremism.
Zimonem ::
grep je standarden linux ukaz. Dela pa to kar si opisal.
Sicer pa če želiš iskati še po drugih vrstah datotek.
https://github.com/phiresky/ripgrep-all
Sicer pa če želiš iskati še po drugih vrstah datotek.
https://github.com/phiresky/ripgrep-all
strawman ::
Če kdo hoče izboljšati svoje regex sposobnosti - Regex Golf.
Ker je meta as fuck, uporabljaš tudi regex za parsanje regexa.
Ker je meta as fuck, uporabljaš tudi regex za parsanje regexa.
Zimonem ::
Kar je pač vaja v slogu. Ampak načeloma brez uvedbe rekurzije to ni rešitev. Regexi niso Turing complete.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Kje in kako dobiti vse črke abecede? (strani: 1 2 )Oddelek: Programiranje | 5723 (4021) | Gagatronix |
» | En bugOddelek: Programiranje | 1213 (736) | mr_chai |
» | [Java] Regularni izrazOddelek: Programiranje | 1127 (979) | jan_g |
» | grep - čisto malo pomoči ;)Oddelek: Programiranje | 2346 (1823) | c0dehunter |
» | c# regularni izrazOddelek: Programiranje | 2017 (1715) | darkolord |