Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Regular Expression for Finding and Deleting comments

Reply
Thread Tools

Regular Expression for Finding and Deleting comments

 
 
Jeremy
Guest
Posts: n/a
 
      01-04-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)

 
Reply With Quote
 
 
 
 
MRAB
Guest
Posts: n/a
 
      01-04-2011
On 04/01/2011 17:11, Jeremy wrote:
> 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)
>

Part of the problem is that you're not using raw string literals or
doubling the backslashes.

Try soemthing like this:

commentPattern = re.compile(r"""
(^[ \t]*c.*\n| # Comment start with c or C
[ \t]*\$.*) # 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)
>


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
FAQ 6.11 How do I use a regular expression to strip C style comments from a file? PerlFAQ Server Perl Misc 0 02-10-2011 11:00 PM
Re: Regular Expression for Finding and Deleting comments Jeremy Python 1 01-04-2011 07:54 PM
Regular expression that skips single line comments? martinjamesevans@gmail.com Python 5 01-20-2009 07:51 AM
How to ignore comments in regular expression??? katy28 Java 0 02-27-2008 10:05 AM
Dynamically changing the regular expression of Regular Expression validator VSK ASP .Net 2 08-24-2003 02:47 PM



Advertisments