|
goafteru wrote:
It is mentioned in the manual:"a single character class followed by '*', which matches 0 or more repetitions of characters in the class.These repetition items will always match the longest possible sequence;"I think the empty string after "abc" should not be matched in lua, just like in other programmes (such as: sed,gawk) .
You have a badly-written regex. I hardly ever use a '*' in an matching or substitution iterator unless its for consuming whitespace. If you are pattern-matching "something that is expected to be there", it's '+' and not '*'. If your regex is too vague, it will usually end up matching in too promiscuous a manner.
------------------ 原始邮件 ------------------ *发件人:* "Patrick Donnelly"<batrick@batbytes.com>; *发送时间:* 2009年12月27日(星期天) 下午3:20 *收件人:* "Lua list"<lua@bazar2.conectiva.com.br>; *主题:* Re: A bug in pattern matching ??On Sun, Dec 27, 2009 at 12:13 AM, goafteru <goafteru@qq.com> wrote:> > print ( string.gsub("abc", "%w*", "@") ) > > and the result is: > @@ 2 > > rather than: > @ 1 %w* can match the empty string, which it does after abc matches. -- -Patrick Donnelly
-- Cheers, Kein-Hong Man (esq.) Kuala Lumpur, Malaysia