Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Capture number between two whitespaces (RegEx)

I have the following data:

SOMEDATA .test 01/45/12 2.50 THIS IS DATA

and I want to extract the number 2.50 out of this. I have managed to do this with the following RegEx:

(?<=\d{2}\/\d{2}\/\d{2} )\d+.\d+ 

However that doesn't work for input like this:

SOMEDATA .test 01/45/12 2500 THIS IS DATA

In this case, I want to extract the number 2500.

I can't seem to figure out a regex rule for that. Is there a way to extract something between two spaces ? So extract the text/number after the date until the next whitespace ? All I know is that the date will always have the same format and there will always be a space after the text and then a space after the number I want to extract.

Can someone help me out on this ?

like image 838
assangar Avatar asked Apr 09 '26 08:04

assangar


1 Answers

Capture number between two whitespaces

A whitespace is matched with \s, and non-whitespace with \S.

So, what you can use is:

\d{2}\/\d{2}\/\d{2} +(\S+)
                      ^^^

See the regex demo

The 1+ non-whitespace symbols are captured into Group 1.

If - for some reason - you need to only get the value as a whole match, use your lookbehind approach:

(?<=\d{2}\/\d{2}\/\d{2} )\S+

Or - if you are using PCRE - you may leverage the match reset operator \K:

\d{2}\/\d{2}\/\d{2} +\K\S+
                     ^^

See another demo

NOTE: the \K and a capture group approaches allow 1 or more spaces after the date and are thus more flexible.

like image 117
Wiktor Stribiżew Avatar answered Apr 12 '26 15:04

Wiktor Stribiżew



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!