So I’ve been working on a little project to write a syntax highlighter for a game’s scripting language. It’s all gone off without a hitch, except for one part: the numbers.
Take these lines for example
(5:42) Set database entry {healthpoints2} to the value 100.
(5:140) Move the user to position (29,40) on the map.
I want to highlight that 100 on the end, without highlighting the (5:42) or the 2 in the braces. The numbers won’t always be in the same place, and there won’t always only be one number.
I basically need a regexp to say:
“Match any numbers that aren’t anywhere between {} and don’t match the (#:#) pattern.”
I’ve been at this for a day and a half now and I’m pulling out my hair trying to figure it out. Help with this would be greatly appreciated!
I’ve already looked at regular-expressions.info, and tried playing around with RegexBuddy, but i’m just not getting it :c
Edit: By request, here’s some more lines copied right from the script editor.
(0:7) When somebody moves into position (**10** fhejwkfhwjekf **20**,
(0:20) When somebody rolls exactly **10** on **2** dice of **6** sides,
(0:31) When somebody says {...},
(3:3) within the diamond (**5**,**10**) - **20** //// **25**,
(3:14) in a line starting at (#, #) and going # more spaces northeast.
(5:10) play sound # to everyone who can see (#,#).
(5:14) move the user to (#,#) if there's nobody already there.
(5:272) set message ~msg to be the portion of message ~msg from position # to position #.
(5:302) take variable %var and add # to it.
(5:600) set database entry {...} about the user to #.
(5:601) set database entry {...} about the user named {...} to #.
You might kick yourself when you see this solution…
Assuming this desired number will always be used in a sentence, it should always have a space preceding it.
If the preceding space isn’t always present, let me know and I’ll update the answer.
Here’s the updated regex to match the 2 examples in your question:
3nd update to account for your question revisions:
So you don’t highlight the number in things like
you might want to pre strip the braces, like so: