lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]




On 2017-10-10 04:13 PM, Dirk Laurie wrote:
function end_of_string_literal(word,quote)
   local m,pos
   repeat
     m, pos = string.match(word, "(\\*)"..quote.."()", pos or 2)
   until m == nil or #m % 2 == 0
   return pos
end

end_of_string_literal("abc'defgh'ijkl","'")
5

Should not the answer rather be 11?

And would not

function end_of_string_literal(word,quote)
   local pattern = '()%b' .. quote:rep(2) ..'()'
   return select(2,word:match(pattern))
end

be somewhat simpler?

It says "end". It implies you already know the start.

"\""




2017-10-10 20:25 GMT+02:00 Soni L. <fakedme@gmail.com>:

On 2017-10-10 02:44 PM, Dirk Laurie wrote:
2017-10-10 14:52 GMT+02:00 Soni L. <fakedme@gmail.com>:
local m, pos
repeat -- TODO fix
    m, pos = string.match(word_eol[2],
"%f[\\"..cw:sub(1,1).."](\\*)"..cw:sub(1,1).."()", pos)
until #m % 2 == 0

I'm having issues making this work.
The title of the post describes a trivial problem (answer: #str+1).

I can't work by reading it what problem the code tries to solve.

Sorry, I meant end of string literal.

After a few hours I came up with this, which works:

local m, pos
repeat
   m, pos = string.match(word_eol[2], "(\\*)"..cw:sub(1,1).."()", pos or 2)
until m == nil or #m % 2 == 0

(cw:sub(1,1) being one of " or ')


--
Disclaimer: these emails may be made public at any given time, with or
without reason. If you don't agree with this, DO NOT REPLY.



--
Disclaimer: these emails may be made public at any given time, with or without reason. If you don't agree with this, DO NOT REPLY.