# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"^<row Id=\"([^\"]*)\" PostTypeId=\"([^\"]*)\" ParentId=\"([^\"]*)\" CreationDate=\"([^\"]*)\" Score=\"([^\"]*)\" Body=\"([^\"]*)\" OwnerUserId=\"([^\"]*)\" LastEditorUserId=\"([^\"]*)\" LastEditorDisplayName=\"([^\"]*)\" LastEditDate=\"([^\"]*)\" LastActivityDate=\"([^\"]*)\" CommentCount=\"([^\"]*)\"?.*$>"
test_str = "<row Id=\"1394\" PostTypeId=\"2\" ParentId=\"1390\" CreationDate=\"2008-08-04T16:38:03.667\" Score=\"16\" Body=\"<p>Not sure how credible <a href="http://www.builderau.com.au/program/windows/soa/Getting-started-with-Windows-Server-2008-Core-edition/0,339024644,339288700,00.htm" rel="nofollow noreferrer">this source is</a>, but:</p>

<blockquote>
 <p>The Windows Server 2008 Core edition can:</p>
 
 <ul>
 <li><p>Run the file server role.</p></li>
 <li><p>Run the Hyper-V virtualization server role.</p></li>
 <li><p>Run the Directory Services role.</p></li>
 <li><p>Run the DHCP server role.</p></li>
 <li><p>Run the IIS Web server role.</p></li>
 <li><p>Run the DNS server role.</p></li>
 <li><p>Run Active Directory Lightweight Directory Services.</p></li>
 <li><p>Run the print server role.</p></li>
 </ul>
 
 <p>The Windows Server 2008 Core edition cannot:</p>
 
 <ul>
 <li><p>Run a SQL Server.</p></li>
 <li><p>Run an Exchange Server.</p></li>
 <li><p>Run Internet Explorer.</p></li>
 <li><p>Run Windows Explorer.</p></li>
 <li><p>Host a remote desktop session.</p></li>
 <li><p>Run MMC snap-in consoles locally.</p></li>
 </ul>
</blockquote>
\" OwnerUserId=\"91\" LastEditorUserId=\"1\" LastEditorDisplayName=\"Jeff Atwood\" LastEditDate=\"2008-08-27T13:02:50.273\" LastActivityDate=\"2008-08-27T13:02:50.273\" CommentCount=\"1\" /> "
matches = re.finditer(regex, test_str)
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