Extract IP Address from File using Python (original) (raw)

Last Updated : 19 Jan, 2026

An IPv4 address is a 32‑bit numerical label used to identify a device on a network. It is written as four decimal numbers (each between 0 and 255) separated by periods (dots). Example of IPs: 192.168.1.1 , 8.8.8.8 , 127.0.0.1

Below are Python examples that demonstrate how to extract all IPs and only valid IPv4 addresses from a file using regular expressions.

This method extracts any IP-like pattern, even if it is not valid (e.g., 999.999.999.999). Below is the sample file (test.txt) used in this example:

ip

test.txt

Python `

import re

with open('test.txt', 'r') as fh: lines = fh.readlines() pattern = re.compile(r'(\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3})')

ip_list = [] for line in lines: match = pattern.search(line) if match: ip_list.append(match.group()) print(ip_list)

`

**Output

['192.168.4.164', '69.168.4.226', '32.89.31.14', '67.168.3.227']

**Explanation:

To extract only valid IPv4 addresses (0-255), we need a stricter regex pattern. Rules for a Valid IPv4 Address are given below:

Regex for Valid IP Addresses

((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)

**Explanation:

Below is the sample file (test2.txt) used in this article.

test2.txt

Python `

import re

with open('test2.txt', 'r') as fh: lines = fh.readlines()

pattern = re.compile(r'((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}'r'(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)')

valid_ips = [] invalid_ips = []

for line in lines: line = line.strip() if pattern.fullmatch(line): valid_ips.append(line) else: invalid_ips.append(line)

print("Valid IPs:", valid_ips) print("Invalid IPs:", invalid_ips)

`

**Output

Valid IPs: ['192.168.4.164', '69.168.4.226', '32.89.31.164', '67.168.3.227']
Invalid IPs: ['000.0000.00.00', '192.168.1.1 912.456.123.123']

**Explanation: