UPC: Difference between revisions

Content added Content deleted
m (→‎{{header|zkl}}: broken comment)
m (→‎{{header|zkl}}: mouse nuts)
Line 344: Line 344:
r
r
}</lang>
}</lang>
Or, if you like way too long regular expressions and having the RE engine
Or, if you like way too long regular expressions:
<lang zkl>var upcRE = RegExp(String("_"*9, "+#_#",
do lots of backtracking:
<lang zkl>var upcRE = (String("_"*9, "+#_#",
lhd.keys.concat("|","(",")")*6, "_#_#_",
lhd.keys.concat("|","(",")")*6, "_#_#_",
rhd.keys.concat("|","(",")")*6, "#_#", "_"*9) : RegExp(_)),
rhd.keys.concat("|","(",")")*6, "#_#", "_"*9)),
digits=lhd.copy().extend(rhd);
digits=lhd.copy().extend(rhd);


fcn parseBarCode2(barcode){ // --> 12 digits
fcn parseBarCode(barcode){ // --> 12 digits
if(not (upcRE.search(barcode) or upcRE.search(barcode.reverse()))) return(False);
if(not (upcRE.search(barcode) or upcRE.search(barcode.reverse()))) return(False);
upcRE.matched[1,*] // ( (a,b), "_#_####","_##___#", 10 more digit patterns )
upcRE.matched[1,*] // ( (a,b), "_#_####","_##___#", 10 more digit patterns )