import re
regex = re.compile(r"^\[assembly: AssemblyInformationalVersion\(\"(?P<version>[0-9]+(\.([0-9]+|\*)){1,3})\"\)\].*$", flags=re.MULTILINE)
test_str = ("using System.Reflection;\n"
"using System.Resources;\n"
"using System.Runtime.InteropServices;\n\n"
"// General Information about an assembly is controlled through the following \n"
"// set of attributes. Change these attribute values to modify the information\n"
"// associated with an assembly.\n"
"[assembly: AssemblyTitle(\"MRC+\")]\n"
"[assembly: AssemblyDescription(\"MRC+ Configuration\")]\n"
"[assembly: AssemblyConfiguration(\"\")]\n"
"[assembly: AssemblyCompany(\"Kongsberg Seatex AS\")]\n"
"[assembly: AssemblyProduct(\"MRC+\")]\n"
"[assembly: AssemblyCopyright(\"Copyright © Kongsberg Seatex AS 2009 - 2015\")]\n"
"[assembly: AssemblyTrademark(\"\")]\n"
"[assembly: AssemblyCulture(\"\")]\n\n"
"// Setting ComVisible to false makes the types in this assembly not visible \n"
"// to COM components. If you need to access a type in this assembly from \n"
"// COM, set the ComVisible attribute to true on that type.\n"
"[assembly: ComVisible(false)]\n\n"
"// The following GUID is for the ID of the typelib if this project is exposed to COM\n"
"[assembly: Guid(\"fd48eeca-4024-4955-aae1-e2279d13d262\")]\n\n"
"// Version information for an assembly consists of the following four values:\n"
"//\n"
"// Major Version\n"
"// Minor Version \n"
"// Build Number\n"
"// Revision\n"
"//\n"
"// You can specify all the values or you can default the Build and Revision Numbers \n"
"// by using the '*' as shown below:\n"
"// [assembly: AssemblyVersion(\"5.6.*\")]\n"
"[assembly: AssemblyVersion(\"5.7.*\")]\n"
"[assembly: AssemblyFileVersion(\"5.7.1\")]\n"
"[assembly: AssemblyInformationalVersion(\"5.7.1.7\")] //Hurra!\n"
"[assembly: NeutralResourcesLanguage(\"en\")]\n")
match = regex.search(test_str)
if match:
print(f"Match was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
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