# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"^\s*(#*)\s*(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})\s+([a-zA-Z0-9\.\- ]+)([^#]*#?\w*\s*)$"
test_str = ("# Copyright (c) 1993-2009 Microsoft Corp.\n"
"#\n"
"# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.\n"
"#\n"
"# This file contains the mappings of IP addresses to host names. Each\n"
"# entry should be kept on an individual line. The IP address should\n"
"# be placed in the first column followed by the corresponding host name.\n"
"# The IP address and the host name should be separated by at least one\n"
"# space.\n"
"#\n"
"# Additionally, comments (such as these) may be inserted on individual\n"
"# lines or following the machine name denoted by a '#' symbol.\n"
"#\n"
"# For example:\n"
"#\n"
"# 102.54.94.97 rhino.acme.com # source server\n"
"# 38.25.63.10 x.acme.com # x client host\n\n"
"# localhost name resolution is handled within DNS itself.\n"
"# 127.0.0.1 localhost\n"
"# ::1 localhost\n\n"
"127.0.0.1 jw smartsite.jw\n"
"127.0.0.1 dev.filepresso.com dev.filepresso.com.pl dev.filepresso.pl dev.filefly.pl\n"
"#### 89.31.66.248 sp.biatelbit.pl\n\n"
"192.168.72.51 subversion.biatel.com.pl\n"
" \n"
"# 127.0.0.1 bip.smartsite.bit-sa.pl\n"
" # 127.0.0.1 bip.augustow.wrotapodlasia.pl\n"
"127.0.0.1 rpowp.smartsite.bit-sa.pl\n"
"127.0.0.1 cms.smartsite.bit-sa.pl\n"
"127.0.0.1 cms-test.smartsite.bit-sa.pl\n\n"
"############################################################ \n"
"# \n"
"# UMWP \n"
"# \n"
"############################################################ \n\n"
"############################################################ \n"
"# ST - test - UMWP \n"
"############################################################ \n"
"#10.200.14.70 ST-sapp1 \n"
"#10.200.14.70 tv.smartsite.bit-sa.pl wp.smartsite.bit-sa.pl cms.smartsite.bit-sa.pl test.smartsite.bit-sa.pl bip.smartsite.bit-sa.pl si.smartsite.bit-sa.pl sspw.wrotapodlasia.pl \n"
"#10.200.14.70 radny.smartsite.bit-sa.pl stats.smartsite.bit-sa.pl test9.smartsite.bit-sa.pl ")
matches = re.finditer(regex, test_str, re.MULTILINE | re.IGNORECASE)
for matchNum, match in enumerate(matches, start=1):
print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))
for groupNum in range(0, len(match.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html