Gido_ Geplaatst: 28 januari 2022 Delen Geplaatst: 28 januari 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 Link naar reactie
0 Gido_ Geplaatst: 30 januari 2022 Auteur Delen Geplaatst: 30 januari 2022 (aangepast) 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 = "" ; "" ) ) ) 30 januari 2022 aangepast door Gido_ Quote Link naar reactie
0 Gido_ Geplaatst: 30 januari 2022 Auteur Delen Geplaatst: 30 januari 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 Link naar reactie
0 Gido_ Geplaatst: 30 januari 2022 Auteur Delen Geplaatst: 30 januari 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 Link naar reactie
Vraag
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...?
Link naar reactie
3 antwoorden op deze vraag
Aanbevolen berichten
Doe mee aan dit gesprek
Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.