~$
/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
> <[email protected]> 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'
>