Names to numbers: Difference between revisions
m
→{{header|Perl 6}}: fiddling with regex notation
SqrtNegInf (talk | contribs) (→{{header|Perl 6}}: entirely new code) |
SqrtNegInf (talk | contribs) m (→{{header|Perl 6}}: fiddling with regex notation) |
||
Line 980:
$str ~~ s:g/(.)(<punct>)/$0 $1/;
for %nums.kv -> $word, $number { $str ~~ s:g/ <|w> $word <|w> / $number / }
$str ~~ s:g/(\d+)
$str ~~ s:g/(\d+)
$str ~~ s:g/ <|w> (\d)
$str ~~ s:g/ <|w> (\d)
$str ~~ s:g/ <|w>
$str ~~ s:g/ <|w>
$str ~~ s:g/
▲ $str ~~ s:g/ <|w> (\d) \s+ 100 \s+ (\d ** 1..2) \s+ (<groups>) <|w> / {($0 * 100 + $1) * $2} /;
▲ $str ~~ s:g/ <|w> (\d) \s+ 100 \s+ (<groups>) <|w> / { $0 * 100 * $1} /;
▲ $str ~~ s:g/ <|w> \s+ 100 \s+ (\d\d) \s+ (\d) \s+ (<groups>) <|w> / {($0 + 100 + $1) * $2} /;
▲ $str ~~ s:g/ <|w> \s+ 100 \s+ (\d ** 1..2) \s+ (<groups>) <|w> / {($0 + 100 ) * $1} /;
▲ $str ~~ s:g/ <|w> \s+ 100 \s+ (<groups>) <|w> / { $0 * 100} /;
▲ $str ~~ s:g/ <|w> (\d\d) \s+ (\d) \s+ (<groups>) <|w> / {($0 + $1) * $2} /;
▲ $str ~~ s:g/ <|w> (\d ** 1..2) \s+ (<groups>) <|w> / { $0 * $1} /;
▲ $str ~~ s:g/ <|w> (\d\d) \s+ (\d) \s+ 100 \s* <|w> / {($0 + $1) * 100} /;
▲ $str ~~ s:g/ <|w> (\d ** 1..2) \s+ 100 \s* <|w> / { $0 * 100} /;
▲ $str ~~ s:g/ <|w> (\d ** 2) \s+ (\d ** 2) <|w> / { $0 * 100 + $1} /;
$str ~~ s:g/(
$str ~~ s:g/(\d+)
$str ~~ s:g/(\d+)
$str ~~ s:g/(\d+)
$str ~~ s:g/(\d+)
▲ $str ~~ s:g/(\d+) \s+ 'dollars' / \$$0 /;
▲ $str ~~ s:g/(\d+) \s+ 'cents' / $0¢ /;
squeeze $str;
|