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.

Reply via email to