I have a string of text that contains an IP address with hyphens and words. I want to extract the IP address from it using a regular expression that also converts the hyphens to periods.
So to clarify, can the IP address be extracted and the hyphens be replaced with periods purely with a regular expression without using the regex in some code such as Java or Python:
What I have
ip-10-179-50-22.corp.dept.org.uk
What I want
10.179.50.22
I'm thinking that I need to extract 4 groups based on numbers and concatenate them with periods, but I have no idea how to do this or if this is even possible with only regex ?
What I've tried
(\d{2,3}-\d{2,3}-\d{2,3}-\d{2,3})
This gives me back 10-179-50-22
but I don't know how to replace on the matching group.
I edited the question to clarify that I was trying to find a solution to find and replace with only a regular expression.
In summary, it looks like you can't just use a regex, but the regex needs to used with some code to achieve this
We don't know which language your using but a lot of them have a.replace() with which you could change - for. or event sub string with a bit of adjusting should work for your problem.
See regex101 example .
Regex:
.*\b(\d{2,3})-(\d{2,3})-(\d{2,3})-(\d{2,3})\b.*
Substitution:
\1.\2.\3.\4
Result:
10.179.50.22
Note that I am just using the regex you provided to match the IP address part, rather than a more accurate regex that would match any valid IP address.
If you are able to use the sed command, this regex would do the job. It uses 4 groups like you suggested.
sed -i 's/^ip-\([0-9]*\)-\([0-9]*\)-\([0-9]*\)-\([0-9]*\).*/\1.\2.\3.\4/g'
It replaces ip-10-179-50-22.corp.dept.org.uk
with 10.179.50.22
. You can test it on https://sed.js.org .
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.