I’d like to make sort of a comment remover for C++.
If there’s a source file like bellow…
<source.txt>
// 1234
12//34
///1234
12///34
and my code is…
file = open(“source.txt”, “r”)
file.each_line {|line|
if line.match /(.*)///
puts $1 if $1.length > 0
end
}
file.close
result is…
12
/
12/
but!, what I expected is~
12
12
What’s wrong with this code…(I think I may not understand regular
expression totally…) and what should I do for this?
[email protected] wrote:
12
/
12/
but!, what I expected is~
12
12
.* tries to match as much as possible (greedy) so the // will match
the
last // it finds - not the first. If you want to make the .* non-greedy,
add
a ? after the *.
HTH,
Sebastian
2008/5/26 [email protected]:
and my code is…
expression totally…) and what should I do for this?
Additional remarks: using the block form of File.open is usually
better because code will be more robust. Here’s another solution:
File.foreach “source.txt” do |line|
puts line.sub(%r{//.*}, ‘’)
end
Kind regards
robert