# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"^(?:<#.*?#>|[^#])*(#.*)?"
test_str = ("-----------------\n"
"---MATCH CASES---\n"
"------------------------------------------------\n"
"$text = \"Hello\"\\t# Comment after tab\n"
"$text+= #Comment without space after hash\n"
"Write-Host $text# Comment without space before hash\n"
"#Comment line with no whitespaces around'\n"
"Write-Host \"Hello\"#Comment in the end with no whitespaces around'\n"
"# Comment with whitespaces around '\n"
"# Consecutive comments\n"
"# Last line comment without line ending in the end\n"
"$text+= #Comment with < inside\n"
"$text+= #Comment ending with >\n"
"$text+= #Comment with <# inline comment #>\n"
"# Normal comment\n"
"Write-Host \"Comment without text\" #\n"
"An <# inline comment #> preceding a #comment\n"
"An <# inline # comment containing a # #> preceding a #comment\n"
"Two <# inline #> comments <# to be #> skipped # comment\n\n\n\n\n\n"
"--------------------\n"
"---NO MATCH CASES---\n"
"------------------------------------------------\n"
"Write-Host \"Hello\"\n"
"Write-Host \"World\"\n"
"Write-Host \"Non-empty line\"\n"
"$text = \"Hello\" <# block comment #> + \"World\"\n"
"$text = \"Hello\" +<#comment#>\"World\"\n"
"<# Block comment in a line #>\n"
"Write-Host \"Hello world <# Block comment in the end of line #>")
matches = re.finditer(regex, test_str, re.MULTILINE)
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