lua-users home
lua-l archive

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


This one should work, don't know if it's elegant:

ws = lpeg.P'*'
sep = lpeg.P','
elem = ws^0 * lpeg.C((1 - (sep+ws))^0) * ws^0
p = elem * (sep * elem)^0
print(p:match('*abcd**,*efgh,***ijklm******'))

Regards

On 4/12/07, Joshua Jensen <jjensen@workspacewhiz.com> wrote:
As my first attempt at using LPeg, I took the Splitting a String example
and wanted to extend it to filter out whitespace on either side of the
string.  All whitespace (represented as a visible *) is removed from the
pattern below except the whitespace at the end.  I understand why it
doesn't work; I don't understand how to make an elegant fix for it.  I
tried all kinds of approaches without success.

ws = lpeg.P ('*')^0
sep = ws * lpeg.P(',') * ws
elem = (lpeg.C((1 - sep)^0))
p = ws * elem * (sep * elem)^0
print(p:match('*abcd**,*efgh,***ijklm******'))

Can anyone clue me in?

Thanks!

Josh