» »

Regexp izraz za filtriranje imen datotek

Regexp izraz za filtriranje imen datotek

1
2
3

GupeM ::

Invictus je izjavil:

BigWhale je izjavil:

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 :P...

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 >:D.
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

BigWhale ::

GupeM je izjavil:


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. :>

mr_chai ::

Invictus je izjavil:

Č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....>:D

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.

Zgodovina sprememb…

Ahim ::

GupeM je izjavil:

Č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 ::

BigWhale je izjavil:

GupeM je izjavil:


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-...
Tako to gre.

kuall ::

GupeM je izjavil:

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

XyNOBvxWVJ ::

GupeM je izjavil:

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.

kuall je izjavil:

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…

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.

root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

XyNOBvxWVJ ::

HotBurek je izjavil:

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…

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

BigWhale ::

GupeM je izjavil:

Zakaj bi kdorkoli parsal HTML z regexi?


Ej, ne vem. Ampak ljudje tud to pocnejo. Sicer pa se enkrat preberi kaj sem napisal. :)

GupeM ::

BigWhale je izjavil:

GupeM je izjavil:

Zakaj bi kdorkoli parsal HTML z regexi?


Ej, ne vem. Ampak ljudje tud to pocnejo. Sicer pa se enkrat preberi kaj sem napisal. :)

Ja, malo prehitro sem prebral.

XyNOBvxWVJ ::

Je govora o parsanju html kode za ekstrakcijo podatkov ali govorita o validaciji html?

kuall ::

HotBurek je izjavil:

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.

nedeljski izziv? ne me jabat, imam bolj zanimive stvari za počet kot to.

XyNOBvxWVJ ::

Ja, upajmo, da res :-)

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?

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…

zmist ::

Invictus je izjavil:

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 ::

kuall je izjavil:


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.

kuall je izjavil:


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...

kuall je izjavil:


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

BigWhale ::

kuall je izjavil:

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 ::

BigWhale je izjavil:

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 >:D.

Č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

Zgodovina sprememb…

  • spremenil: Invictus ()

BigWhale ::

kuall je izjavil:

BigWhale je izjavil:

Lej, ce ne znas uporabljat kladiva, ga ne uporabljal in se naprej zabijaj zeblje s kombinirkami.

Bla bla.


Soliden argument, cloveka, ki se spozna. :)

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:
==================================================
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!)

XyNOBvxWVJ ::

> Jaz lahko 'spacam' neko skriptico ki uporablja Regexp in jo dam nekomu v uporabo.

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 >:D, 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

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.

XyNOBvxWVJ ::

Pa boli te ena reč, križ, ledvice, nekaj, kar se tu otročad prepira.

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.

SeMiNeSanja ::

kuall je izjavil:

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!)

BigWhale ::

kuall je izjavil:

samo ni pa neka huda škoda, če ga ne uporabljaš / se ga ne naučiš, je dostikrat bolje, da ga ne.

<Citation Needed>

kuall je izjavil:

BigWhale: bla bla je bilo mišljeno kot: blefiraš z nekimi floskulami.


Za svoje trditve nisi podal se _nobenega_ dokaza. Pac, nakladas. :)

GupeM ::

kuall je izjavil:

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.

GupeM je izjavil:


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 ::

zmist je izjavil:

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!)

garamond ::

Invictus je izjavil:

Regex se naučiš po potrebi... [...]
Je pač še eno orodje, ki ga uporabljaš, kadar ga rabiš...[...]
Se zelo strinjam s tem. Mislim, da je zelo koristno znati (osnove) in jih uporabiti ob primerni priložnosti.

Š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).
 GUI za Regex v InDesignu, oz. bolj natančno GREP (Global Regular Expression Print)

GUI za Regex v InDesignu, oz. bolj natančno GREP (Global Regular Expression Print)


zmist je izjavil:

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.
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 xD
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

strawman ::

Če kdo hoče izboljšati svoje regex sposobnosti - Regex Golf.
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.
1
2
3


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Kje in kako dobiti vse črke abecede? (strani: 1 2 )

Oddelek: Programiranje
555349 (3647) Gagatronix
»

En bug

Oddelek: Programiranje
91185 (708) mr_chai
»

[Java] Regularni izraz

Oddelek: Programiranje
81093 (945) jan_g
»

grep - čisto malo pomoči ;)

Oddelek: Programiranje
192310 (1787) c0dehunter
»

c# regularni izraz

Oddelek: Programiranje
201999 (1697) darkolord

Več podobnih tem