On 29 September 2010 11:34, Colomban Wendling lists.ban@herbesfolles.org wrote:
Le 29/09/2010 03:31, Lex Trotman a écrit :
On 29 September 2010 11:24, Colomban Wendling lists.ban@herbesfolles.org wrote:
Le 29/09/2010 03:16, Lex Trotman a écrit :
On 29 September 2010 11:09, Lex Trotman elextr@gmail.com wrote:
On 29 September 2010 10:30, Erik de Castro Lopo mle+tools@mega-nerd.com wrote:
Hi all,
I've got a file of C code which for part of the file has an extra single space indent on the left hand side. To fix this I'm trying to do a regex search for "^ " and replace it with "" (ie empty string). Unfortunately, this search/replace removes all space indentation which is not really what I expect.
Any clues on getting this right? Is this a bug?
Actually having a bit of a think, it can't work since after replacing the first space with nothing it will find another space at the same place and remove it until it removes all the spaces at the start of the line before moving on to the next.
So its working right, just not what you want :-) & I'm not sure how to do it.
not sure it is "right" -- it already matched ^, so why match it again?
Because it has removed the space it matched, the so its position is back to the start of the line (which matches ^).
Yes I agree it is a possible understanding of the thing, but I'm not sure it is "the one".
BTW sed behaves the way Erik wants: sed 's/^ //g' file will only remove the first spaces of every lines, even though the option g is present.
Yes because sed only operates on a line at a time and g finds all the matches in the line then makes the substitutions, it does not run the substitution multiple times.
Geany does not find all the locations first and then do the replaces, it does find, replace, go to the end of the replacement, repeat until done
The REGEX rules (Perl and POSIX which is pretty canonical :-) require left most longest greedy match, ie the ^ assertion must be tested at the current position first. To do anything else would be non-standard behavior. The REGEX engine doesn't know it has just previously done a replacement with nothing at the current position.
So I would say that the current behavior IS correct, and since Columban has given us an incantation to cover those rare situations where the standard behavior is annoying, there is no need for some non-standard special case to be added.
The only possible change might be to re-phrase "replace all" in the manual and dialog to be "repeat replacement".
Cheers Lex
Regards, Colomban _______________________________________________ Geany mailing list Geany@uvena.de http://lists.uvena.de/cgi-bin/mailman/listinfo/geany