Regular Expression for Finding and Deleting comments

Jeremy jlconlin at gmail.com
Tue Jan 4 12:11:26 EST 2011


I am trying to write a regular expression that finds and deletes (replaces with nothing) comments in a string/file.  Comments are defined by the first non-whitespace character is a 'c' or a dollar sign somewhere in the line.  I want to replace these comments with nothing which isn't too hard.  The trouble is, the comments are replaced with a new-line; or the new-line isn't captured in the regular expression.  

Below, I have copied a minimal example.  Can someone help?

Thanks,
Jeremy


import re

text = """ c
C - Second full line comment (first comment had no text)
c   Third full line comment
  F44:N 2    $ Inline comments start with dollar sign and go to end of line"""

commentPattern = re.compile("""
    (^\s*?c\s*?.*?|             # Comment start with c or C
    \$.*?)$\n                           # Comment starting with $
    """, re.VERBOSE|re.MULTILINE|re.IGNORECASE)

found = commentPattern.finditer(text)

print("\n\nCard:\n--------------\n%s\n------------------" %text)

if found:
   print("\nI found the following:")
   for f in found: print(f.groups())

else:
   print("\nNot Found")

print("\n\nComments replaced with ''")
replaced = commentPattern.sub('', text)
print("--------------\n%s\n------------------" %replaced)




More information about the Python-list mailing list