# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"(?mis)^\bgeneral( #[0-9])?(.*?)^\s*$"
test_str = ("General\n"
"Complete name : C:\\Projects\\Foray\\MediaEngine\\SampleMedia\\flv\\small.flv\n"
"Format : Flash Video\n"
"File size : 296 KiB\n"
"Duration : 5s 560ms\n"
"Overall bit rate mode : Variable\n"
"Overall bit rate : 436 Kbps\n"
"Writing application : Lavf52.103.0\n\n"
"Video\n"
"Format : Sorenson Spark\n"
"Codec ID : 2\n"
"Duration : 5s 560ms\n"
"Bit rate : 781 Kbps\n"
"Width : 320 pixels\n"
"Height : 240 pixels\n"
"Display aspect ratio : 4:3\n"
"Frame rate mode : Constant\n"
"Frame rate : 25.000 fps\n"
"Bit depth : 8 bits\n"
"Bits/(Pixel*Frame) : 0.407\n"
"Stream size : 530 KiB\n\n"
"Audio\n"
"Format : MPEG Audio\n"
"Format version : Version 1\n"
"Format profile : Layer 3\n"
"Codec ID : 2\n"
"Codec ID/Hint : MP3\n"
"Duration : 5s 512ms\n"
"Bit rate mode : Variable\n"
"Bit rate : 63.8 Kbps\n"
"Channel(s) : 1 channel\n"
"Sampling rate : 44.1 KHz\n"
"Compression mode : Lossy\n"
"Stream size : 42.9 KiB (14%)\n\n\n")
matches = re.search(regex, test_str)
if matches:
print ("Match was found at {start}-{end}: {match}".format(start = matches.start(), end = matches.end(), match = matches.group()))
for groupNum in range(0, len(matches.groups())):
groupNum = groupNum + 1
print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = matches.start(groupNum), end = matches.end(groupNum), group = matches.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