Re: Test not working so well

[email protected] ("Kevin Pye")
Newsgroups perl.perl6.users
Message-ID <[email protected]>
Seriously Todd? "What is a digit?" The characters '0' to '9' are digits. (Unicode probably has a whole lot of others, but those will do for the moment.)

On Mon, 11 Dec 2023, at 18:22, ToddAndMargo via perl6-users wrote:
> On 12/10/23 22:26, William Michels via perl6-users wrote:

> If I do not know the length of the sting and have to ask
> with .chars, is there a way to use a variable in `** 7`
>
>       ** $x.chars   or
>       my $xlen = $x.chars; `** $xlen`
>
> or some such?  Is there a special syntax?
>
> Also, must the `**7`  (does it have a name?) always be the length
> of the string?
>
> Also, if I do not use ^ and $, what happens?

These are really basic questions.

"**7" is a modifier. It means that the previous item must match exactly 7 times. Just like "+" means "one or more" and "*" means "zero or more". The "7" can be a range. Thus "<[0..9]>**1..7" means one to seven digits.

To interpolate code into a regex, use the { raku code } syntax. Perhaps "**{$x.chars}" will work. (I'm not sure of that one.) On the other hand, if you just want to make sure that everything is a digit, "/ ^ <[0..9]>+ $ /" will work fine. Or even simpler "/ ^ \d+ $ /" since "\d" just means "a digit" (although you will also get anything else Unicode considers a digit).

If you do not include the '^' and/or '$' characters, then the match may occur in the middle (or start or end) of a longer string.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.