> On Mon, May 06, 2019 at 07:12:39PM -0700, Tony Ewell via perl6-users wrote:
>> Hi All,
>>
>> What am I doing wrong here?
>>
>> $ p6 'my $x="\$1.23"; $x~~s/("\$") (.*?)/$1USD/; say $x;'
>> USD1.23
>>
>> I am expecting to see  `1.23USD`
>>
>> Many thanks,
>> -T

On 5/7/19 3:05 PM, Patrick R. Michaud wrote:
The (.*?) pattern will match an empty string.

Thus $0 gets the dollar sign, $1 is "", and "$" ~ "" (i.e., "$") gets replaced by "" ~ 
"USD"  (i.e., "USD").

So the net result is to replace the single dollar sign by "USD", resulting in 
"USD1.23".

You might want to remove the ? modifier from .*?, so that the expresssion is 
greedy instead of eager.

Pm

I wasn't "greedy" enough.  Chuckle!

Thank you!

Reply via email to