Site icon Spark By {Examples}

Python regex ip address

Python is a universal language that is used in many fields. One of these fields is networking where you will have to work with IP addresses more. As you are using Python to handle your networking tasks, you might want to validate IP addresses or maybe search IP addresses. Python’s regular expressions (regex) provide a powerful way to match and manipulate IP addresses.

In this tutorial, you will learn how you can use Python regex to work with IP addresses.

Here is what you will learn:

Understanding an IP address

Before we dive deep into working with IP addresses we should get to understand what they are and their format. An IP address is simply a numerical identifier assigned to each device connected to a computer network. It stands for Internet Protocol address. It acts as an identification for devices, enabling network communication between them. The format of an IP address is as follows, we have four sets of integers, separated by dots, such as 192.168.0.1. Each set is capable of having a value between 0 and 255.

Matching an IP address

As you are working with IP addresses you will likely encounter a scenario where you are required to match an IP address. With Python regex, this is not a complex task, you use the re.match() method.

Defining the Pattern

If you want to match an IP address, you will need first of all to define a pattern. A pattern for matching an IP address is as follows:


^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$

Here is what the pattern means:

An Example

Now that you know the pattern for matching an IP address, let us look at an example for a better understanding:


import re

# the IP address to match
ip_address = "172.67.173.18"

# regex pattern for matching IP addresses
pattern = r'^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$'

# match the IP address against the pattern
match = re.match(pattern, ip_address)

# check if the match is successful
if match:
    print("Valid IP address")
else:
    print("Invalid IP address")

Here’s a breakdown of the code:

Output:


#Output
Valid IP address

Validating an IP address

Another practical example, when you are working with IP addresses, is validating it. Here is an example of validating an IP address:


import re

def validate_ip_address(ip_address):
    # regex pattern for validating IP address
    pattern = r'^(\d{1,3}\.){3}\d{1,3}$'
    
    # perform a match using the pattern on the given IP address
    match = re.match(pattern, ip_address)
    
    # if there is a match, return True; otherwise, return False
    return bool(match)

# test the function with an example IP address
ip_address = "172.67.173.18"

if validate_ip_address(ip_address):
    print("Valid IP address")
else:
    print("Invalid IP address")

The code defines a regular expression pattern pattern that matches the format of an IP address. The re.match() method is used to check if the ip_address matches the pattern. If there is a match, the method returns True, indicating a valid IP address. Otherwise, it returns False. The provided IP address is tested using the validate_ip_address function.

Extracting an IP address

It is so likely that you will encounter a scenario where you would like to extract an IP address from some text. For this task, you will have to use the re.findall() method. Here is an example:


import re

# example text containing IP addresses
text = "This is a sample text with IP addresses like 192.168.0.1, 172.67.173.18 and 10.0.0.2"

# regex pattern for matching IP addresses
pattern = r'\b(?:\d{1,3}\.){3}\d{1,3}\b'

# find all occurrences of IP addresses in the text
ip_addresses = re.findall(pattern, text)

# print the extracted IP addresses
for ip_address in ip_addresses:
    print(ip_address)

In the code snippet, we define a text containing multiple IP addresses separated by commas. Then we define a regex pattern r'\b(?:\d{1,3}\.){3}\d{1,3}\b' to match IP addresses. Let’s break down the pattern:

We use the re.findall() method to find all occurrences of the IP addresses in the text based on the pattern. The results are stored in the ip_addresses list.

Finally, we iterate over the ip_addresses list and print each extracted IP address.

Output:


#Output
192.168.0.1
172.67.173.18
10.0.0.2

Conclusion

That concludes this tutorial. This tutorial has walked you through some important skills you can use when working with IP addresses in your networking tasks. We hope that the skills gained will be useful in your networking tasks.

Exit mobile version