Thanks for the report. I'll try to run it in Studio and see if I can spot where it is blowing up. It would be easier if it was in fact "crashing", but it isn't. It just causes Rainmeter to become "unresponsive".
/^.*(\d*).*$/
^ assert position at start of the string
.* matches any character (except newline)
Quantifier: * Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
1st Capturing group (\d*)
\d* match a digit [0-9]
Quantifier: * Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
.* matches any character (except newline)
Quantifier: * Between zero and unlimited times, as many times as possible, giving back as needed [greedy]
$ assert position at end of the string
In my view that should at best return "3" (or more likely nothing) from your string since it is "greedy" and does a ton of backtracking and "giving back" due to the .* sequences, but certainly shouldn't bork things.
Seems to me that:
Substitute="^\D*(\d+)\D*$":"\1"
Would work. Doesn't cause it to "eat" the entire string, then backtrack to figure out what to keep and what to give back. "Any number character" is also "any character".
This has been corrected in the 3.3 r2414 beta. Sorry it took so long, but this was a rare enough issue that it kept falling off the radar.
The initial .* used in a greedy way will cause the expression to first immediately zoom out to the end of the string. All the characters in the string match "any character". Then it will start backtracking and giving back to try and make the match on the capture.
i think it broke something if you combine a negative lookahead with zero or more in a regular expression.
sorry, no example. fixed the skin in question a few days ago but didn't remember to copy the old expression.
but then negative lookaheads aren't used that often in Rainmeter skins.