~$ /Users/admin/rakudo/rakudo-2024.09/rakudo-moar-2024.09-01-macos-arm64-clang/bin/raku -e ' \ my Str $AltClickHere = lines[0]; \ my @AltArray = ($AltClickHere ~~ m:g/ download #literal .*? #any-character, one-or-more, frugal <?before \> > #positive look-ahead, match but dont capture \> angle /).map(*.Str); \ .put for @AltArray;' todd_test.txt download='betterbird-128.6.0esr-bb20.de.linux-x86_64.tar.bz2' download='betterbird-128.6.0esr-bb20.en-US.linux-x86_64.tar.bz2' download='betterbird-128.6.0esr-bb20.es-AR.linux-x86_64.tar.bz2'
Hi Todd, Well the previous code I sent works with your example, but the code above is better: 1. The first token can be simplified to the literal `download`. You could use `[ ^ | download ]`, which would capture everything from `^` the beginning of the string regardless of whether-or-not the string starts with `download`. 2. The second token, `.*?`, matches any-character, one-or-more, frugally. 3. The third (original) token, `<?before \> | \h+ >` could be simplified to either `<?before \> >` or `<?before \h+ >`. It says to find the pattern but stop the match before the literal ">" angle or "\h+" one-or-more horizontal whitespace character. I hope that helps a bit. Oh yeah, if you want just the quoted download, you could use a positive-lookbehind, `<?after … >`. See below: ~$ /Users/wmichels/rakudo/rakudo-2024.09/rakudo-moar-2024.09-01-macos-arm64-clang/bin/raku -e ' \ my Str $AltClickHere = lines[0]; \ my @AltArray = ($AltClickHere ~~ m:g/ <?after download \= > #positive look-behind, match but dont capture download\= .*? #any-character, one-or-more, frugal <?before \> > #positive look-ahead, match but dont capture \> angle /).map(*.Str); \ .put for @AltArray;' todd_test.txt 'betterbird-128.6.0esr-bb20.de.linux-x86_64.tar.bz2' 'betterbird-128.6.0esr-bb20.en-US.linux-x86_64.tar.bz2' 'betterbird-128.6.0esr-bb20.es-AR.linux-x86_64.tar.bz2' HTH, Bill. > On Jan 11, 2025, at 19:09, ToddAndMargo via perl6-users > <perl6-us...@perl.org> wrote: > > Hi All, > > In another post, Bill gave me a wonderful match that took > a ridiculously long line of test and cut out what I wanted > and put it into cells of an array. > > @ClickArray = $ClickPage ~~ m:g/ <?before ^ | download > .*? <?before \> | > \h+ > /; > > I do not understand what he did. > > m:g = match and global > > <> = litteral > > ? what does this do? > ^ what does this do? > > | what does this do? > \ what does this do > > \h+ > what does this do? > > > > Yours in confusion. > -T > > > In practice: > > > [0] > my Str > $x=Q{^[[200~download='betterbird-128.6.0esr-bb20.de.linux-x86_64.tar.bz2'> > <div class="img bz2"></div> <div class="name"> <div class="file > fs-1-2 bold">betterbird-128.6.0esr-bb20.de.linux-x86_64.tar.bz2</div> <div > class="data upper size fs-0-7"><span class="bold">Size:</span> 80.26<span > class="fs-0-8 bold">MB</span></div> <div class="data upper modified > fs-0-7"><span class="bold">Last modified:</span> Tue. January 7th, 2025 - > 10:54pm</div> </div></a></div><div class="block"><a > href="LinuxArchive/betterbird-128.6.0esr-bb20.en-US.linux-x86_64.tar.bz2" > class="bz2" download='betterbird-128.6.0esr-bb20.en-US.linux-x86_64.tar.bz2'> > <div class="img bz2"></div> <div class="name"> <div class="file > fs-1-2 bold">betterbird-128.6.0esr-bb20.en-US.linux-x86_64.tar.bz2</div> <div > class="data upper size fs-0-7"><span class="bold">Size:</span> 80.04<span > class="fs-0-8 bold">MB</span></div> <div class="data upper modified > fs-0-7"><span class="bold">Last modified:</span> Tue. January 7th, 2025 - > 10:42pm</div> </div> </a></div><div class="block"><a > href="LinuxArchive/betterbird-128.6.0esr-bb20.es-AR.linux-x86_64.tar.bz2" > class="bz2" download='betterbird-128.6.0esr-bb20.es-AR.linux-x86_64.tar.bz2'> > <div class="img bz2"></div> <div class="name"> <div class="file > fs-1-2 bold">betterbird-128.6.0esr-bb20.es-AR.linux-x86_64.tar.bz2</div>} > download='betterbird-128.6.0esr-bb20.de.linux-x86_64.tar.bz2'> <div > class="img bz2"></div> <div class="name"> <div class="file fs-1-2 > bold">betterbird-128.6.0esr-bb20.de.linux-x86_64.tar.bz2</div> <div > <class="data upper size fs-0-7"><span class="bold">Size:</span> 80.26<span > class="fs-0-8 bold">MB</span></div> <div class="data upper modified > fs-0-7"><span class="bold">Last modified:</span> Tue. January 7th, 2025 - > 10:54pm</div> </div></a></div><div class="block"><a > href="LinuxArchive/betterbird-128.6.0esr-bb20.en-US.linux-x86_64.tar.bz2" > class="bz2" download='betterbird-128.6.0esr-bb20.en-US.linux-x86_64.tar.bz2'> > <div class="img bz2"></div> <div class="name"> <div class="file > fs-1-2 bold">betterbird-128.6.0esr-bb20.en-US.linux-x86_64.tar.bz2</div> <div > class="data upper size fs-0-7"><span class="bold">Size:</span> 80.04<span > class="fs-0-8 bold">MB</span></div> <div class="data upper modified > fs-0-7"><span class="bold">Last modified:</span> Tue. January 7th, 2025 - > 10:42pm</div> </div> </a></div><div class="block"><a > href="LinuxArchive/betterbird-128.6.0esr-bb20.es-AR.linux-x86_64.tar.bz2" > class="bz2" download='betterbird-128.6.0esr-bb20.es-AR.linux-x86_64.tar.bz2'> > <div class="img bz2"></div> <div class="name"> <div class="file > fs-1-2 bold">betterbird-128.6.0esr-bb20.es-AR.linux-x86_64.tar.bz2</div> > > > [1] > my @y = $x ~~ m:g/ <?before ^ | download > .*? <?before \> | \h+ > /; > > [「download='betterbird-128.6.0esr-bb20.de.linux-x86_64.tar.bz2'」 > 「download='betterbird-128.6.0esr-bb20.en-US.linux-x86_64.tar.bz2'」 > 「download='betterbird-128.6.0esr-bb20.es-AR.linux-x86_64.tar.bz2'」] > > > [2] > for @y -> $Line { print $Line ~ "\n"; } > > download='betterbird-128.6.0esr-bb20.de.linux-x86_64.tar.bz2' > download='betterbird-128.6.0esr-bb20.en-US.linux-x86_64.tar.bz2' > download='betterbird-128.6.0esr-bb20.es-AR.linux-x86_64.tar.bz2' >