[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: A stupid question
- From: Enrico Colombini <erix@...>
- Date: Fri, 11 Jan 2002 12:21:35 +0100
I have to change a whole word (s) with another word (sh) in a string
(line), using gsub, but I can't find a simple way to do it.
Suppose the first word (s) is "the"; I want to change every occurrence of
"the" but not to change the "the" in "theory", "atheist" or "lithe".
So far, the only way I found is this, but it seems a bit ridicolous:
line = gsub(line, '(%W)'..s..'(%W)', '%1'..sh..'%2') -- in the middle
line = gsub(line, '^'..s..'(%W)', sh..'%1') -- start of line
line = gsub(line, '(%W)'..s..'$', '%1'..sh) -- end of line
line = gsub(line, '^'..s..'$', sh) -- alone on the line
My problem comes from the lack of a "word boundary" magic character in
patterns (like "\b" in Perl). "%W" requires an existing character in that
position, so it doesn't seem to work at the beginning or at the end of a
string, and ^$ anchors can't be used in [character sets].
I suppose I am doing something wrong; is there a simpler way and I missed
something obvious?
Enrico