Gido_ Posted January 28, 2022 Posted January 28, 2022 Ik ben erg gewoon aan deze luxe in AutoIt software (en voor veel gecompliceerdere problemen dan het voorbeeld natuurlijk). Je kan hier bv. specifiëren dat je ineens een array/lijst krijgt van alle gevonden waarden (3). Ik zou dit bij voorkeur graag hebben m.b.v. de BE plugin (in FM 12 Adv.), waarmee dat m.i. niet rechtstreeks mogelijk is? https://docs.baseelementsplugin.com/article/539-beregularexpression Maar mss met een recursieve CF die de BE_RegularExpression binnenin gebruikt? Ik heb ook even bij briandunning gekeken en kreeg even grote hoop bij deze... www.briandunning.com/cf/1941 Maar naar mijn indruk doet het vreemd en niet hetgeen van hierboven (al kan je al eens geluk hebben). Kennen jullie iets dat dit al kan, of denk je dat dit recursief kan werken in een CF? Ik heb net weer een crash gehad met een recursief probeerseltje, en de meeste vbn die ik zie "krijg ik hoofdpijn van"... Vandaar de vraag of het al bestaat, of dat er vertrouwen is dat het gemaakt kan worden...? Quote
0 Gido_ Posted January 30, 2022 Author Posted January 30, 2022 (edited) Ben er zelf dan maar ingedoken en dit is mijn eerste n00b recursive Custom Function. Ik weet niet of het via de regels van de kunst is, maar deze werkt zoals ik gewoon ben in AutoIt. Er moet mogelijk nog iets ingewerkt worden wat betreft BE plugin errors, hetgeen mss een "?" in _RE kan opleveren. Ik hou het simpel hier. De functie geeft een lijst van alle hits in oorspronkelijke volgorde, zonder trailing CR (zie hierboven). /* Similar to AutoIt's StringRegExp ( "test", "pattern" , 3 ) returning a hit list in order of appearance (no trailing CR). www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm www.clarify.net/index.php?/topic/11490-regex-custom-functie-voor-autoit-lijst-stijl-resultaten https://docs.baseelementsplugin.com/article/539-beregularexpression TO DO: plugin error checks, unless _RE would stay empty? StringRegExp( test ; pattern ) */ Let ([ _RE = BE_RegularExpression ( test ; pattern ) ; _hit = If ( IsEmpty (_RE) ; 0 ; 1 ) ; _pos = If ( _hit ; Position ( test ; _RE ; 1 ; 1 ) + Length ( _RE ) ; 1 ) ; _test = If ( _hit ; Middle ( test ; _pos ; 99999 ) ; test ) ; $r = If ( _hit ; $r & ¶ & _RE ; $r ) ]; If (_hit ; StringRegExp(_test ; pattern ) ; Replace ( $r ; 1 ; 1 ; "" ) & Let ( $r = "" ; "" ) ) ) Edited January 30, 2022 by Gido_ Quote
0 Gido_ Posted January 30, 2022 Author Posted January 30, 2022 De 3e parameter bij _test is overbodig of fout en mag eruit, denk ik. Correctie : /* Similar to AutoIt's StringRegExp ( "test", "pattern" , 3 ) returning a hit list in order of appearance (no trailing CR). www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm www.clarify.net/index.php?/topic/11490-regex-custom-functie-voor-autoit-lijst-stijl-resultaten https://docs.baseelementsplugin.com/article/539-beregularexpression TO DO: plugin error checks, unless _RE would stay empty? StringRegExp( test ; pattern ) */ Let ([ _RE = BE_RegularExpression ( test ; pattern ) ; _hit = If ( IsEmpty (_RE) ; 0 ; 1 ) ; _pos = If ( _hit ; Position ( test ; _RE ; 1 ; 1 ) + Length ( _RE ) ; 1 ) ; _test = If ( _hit ; Middle ( test ; _pos ; 99999 ) ) ; $r = If ( _hit ; $r & ¶ & _RE ; $r ) ]; If (_hit ; StringRegExp(_test ; pattern ) ; Replace ( $r ; 1 ; 1 ; "" ) & Let ( $r = "" ; "" ) ) ) Quote
0 Gido_ Posted January 30, 2022 Author Posted January 30, 2022 De 3e parameter mag ook weg hier, denk ik... _pos = If ( _hit ; Position ( test ; _RE ; 1 ; 1 ) + Length ( _RE ) ; 1 ) ; => _pos = If ( _hit ; Position ( test ; _RE ; 1 ; 1 ) + Length ( _RE ) ) ; - - - - RegEx probleempje... Wat bij de BE_RegularExpression niet lijkt te werken is \n of [^\n] In andere regex stijlen heb je \v en \h voor vertical/horizontal space. Deze heb je niet in Perl, maar \n zou moeten werken voor newline? Als ik bv deze 3 namen clean in een lijst wil hebben zonder de CR, dan doe ik in andere stijlen... "John, Mark, Jan¶" ; "(?<=^|, )[^,\v]+(?=, |$)" In Perl zou \n blijkbaar wel moeten werken, maar dit werkt dus niet met de BE plugin (noch een boel andere varianten) ... "John, Mark, Jan¶" ; "(?<=^|, )[^,\n]+(?=, |$)" // of "John, Mark, Jan¶" ; "(?<=^|, )[^,]+(?=, |\n|$)" // geven: John Mark Jan ¶ Er zijn altijd andere manieren, maar het is wel sneu... Quote
Question
Gido_
Ik ben erg gewoon aan deze luxe in AutoIt software (en voor veel gecompliceerdere problemen dan het voorbeeld natuurlijk).
Je kan hier bv. specifiëren dat je ineens een array/lijst krijgt van alle gevonden waarden (3).
Ik zou dit bij voorkeur graag hebben m.b.v. de BE plugin (in FM 12 Adv.), waarmee dat m.i. niet rechtstreeks mogelijk is?
https://docs.baseelementsplugin.com/article/539-beregularexpression
Maar mss met een recursieve CF die de BE_RegularExpression binnenin gebruikt?
Ik heb ook even bij briandunning gekeken en kreeg even grote hoop bij deze...
www.briandunning.com/cf/1941
Maar naar mijn indruk doet het vreemd en niet hetgeen van hierboven (al kan je al eens geluk hebben).
Kennen jullie iets dat dit al kan, of denk je dat dit recursief kan werken in een CF?
Ik heb net weer een crash gehad met een recursief probeerseltje, en de meeste vbn die ik zie "krijg ik hoofdpijn van"...
Vandaar de vraag of het al bestaat, of dat er vertrouwen is dat het gemaakt kan worden...?
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.