Escape character for filtering?

Sarah Reichelt sarah.reichelt at gmail.com
Thu Apr 6 19:14:58 EDT 2006


> Is there an escape character that works with Rev's filter command? I would
> like to filter a list of XML paths, and want to match things like
> "...\Child[6]\...". I hoped to filter with expressions something like
> "Child\[6\]", but this does not work. The following code illustrates that
> "/" works fine, but "\[" does not.
>
> I know that I can work around and use filters by replacing the [ and ] in
> tList, but this is going to run quite often, and I think performance will
> suffer noticeably. I could also make a single pass through the lines of
> tList and evaluate each line with a transcript statement or two, but it
> should be best to use a single filter command that can recognize \[\d\].
>
> The 2.7 manual description of the filter command links to the regular
> expression syntax, which is not quite what I need, AFAICT.
>
> Any suggestions?
>
> Here's code for a button to try the alternatives.
>
>
> <code type="xtalk">
> <!-- for Marielle Lange: do you still want this markup? -->
>
> on mouseup
>   local tList,tFilter,tFound,tFilterList = "/,[,\[,\[\d\],/Child"
>   local tSkipMatch = "["
>
>   repeat for each item tFilter in tFilterList
>     put XMLPathList() into tList
>     if tFilter is not among the items of tSkipMatch then
>       put matchtext(tlist,tFilter) into tFound
>     else
>       put "Skip" into tFound
>     end if
>     filter tList with "*" & tFilter & "*"
>     answer XMLPathList() & CR & "filter string:" & tFilter & CR &\
>     "matchText: " & tFound & CR & "filter command: " & CR &  tlist
>   end repeat
>
> end mouseup
>
> function XMLPathList
>   --sample formatted after Ken Ray's STS XML paths
>   return "3/Root/Child[1]/Grandchild[1]" & cr &
> "3/Root/Child[1]/Grandchild[2]"
> end XMLPathList
>
> </code>


You ask for help using the "filter" command but then use the
"matchtext" function instead. If you actually use "filter" you won't
need to escape any characters.

   filter with "*\Child[6]\*"

should do what you need. The * at each end allows any number of
characters to appear in the matching lines before or after your
specified filter string.

Cheers,
Sarah



More information about the use-livecode mailing list