I'm trying to extract a substring with a Windows command.
I want to extract a number that looks like this: 1.2.3.4
or more exact [anyPosInteger.anyPosInteger.anyPosInteger.anyPosInteger]
.
I thought I was doing that with the regex.
Here is the code:
set mystring="whatever 1.2.3.4 whatever talk to the hand"
echo %mystring% | findstr /r "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" >foundstring
echo %foundstring%
Whould have been nice if the "foundstring" was "1.2.3.4".
findstr
seem to only return the whole string when a match with regex has been found. What is more funny is that the regex that I have cunstructed does not seem to be liked by findstr.
This works "[0-9].[0-9].[0-9].[0-9]" but it still returns the whole string.
What am I doing wrong here? :)
/H
unfortunately findstr
cannot be used to extract matches, and findstr
does not support +
as quantifier, you have to use:
findstr /R "[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*"
but it will only return the whole line, for extracting regex match only i suggest you use powershell
"whatever 1.2.3.4 whatever talk to the hand" | Select-String -Pattern '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | % { $_.Matches } | % { $_.Value }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With