Brian.

The original post tried to filter a string by filtering (without) that actual 
string, and was interested in why that did not yield empty. Intuitively, the 
result of such a filter operation ought always to be empty. The presence of the 
char “[“ is the “culprit”. That is as far as I took it.

Anyway, you state that the char “[“ is a regex special character, which 
explains a lot. The other two, “?” and “*” filter without issue, though, and I 
guess one has to be a regex user to see why.

I am not.

Craig

> On Jan 24, 2024, at 2:53 PM, Brian Milby via use-livecode 
> <use-livecode@lists.runrev.com> wrote:
> 
> Your test misses the actual issue:
> 
> on mouseup
>   local tStr
>   local tFilter
>   put "a*b" into tFilter
>   put "anything bold" into tStr
>   filter tStr with tFilter
>   put tStr
> end mouseup
> 
> Will yield "anything bold"
> 
> while using the following 2 lines:
>   put "a?b" into tFilter
>   put "a*b" into tStr
> will yield "a*b"
> 
> Finally, using the following 2 lines:
>   put "a[?]b" into tFilter
>   put "a?b" into tStr
> will  yield "a?b"
> 
> The point is that you can end up with issues if you are counting on "*" and
> "?" to filter literally.  They don't - they are wildcards and can match
> anything (multiple char or single char respectively).  The "[" is also
> special.
> 
> To ensure that your filters work properly if you do not want to use any
> wildcards (i.e. match * and ? literally) would require you to change *, ?,
> and [ to [*], [?], and [[].
> 
> On Wed, Jan 24, 2024 at 1:19 PM Craig Newman via use-livecode <
> use-livecode@lists.runrev.com> wrote:
> 
>> OK, instead of working I did this:
>> 
>> on mouseUp
>> 
>> repeat with y = 1 to 255
>> 
>> put "XX" & numToChar(y) & "XX"  into temp
>> 
>> filter temp without temp
>> 
>> if temp <> "" then put y & return after accum
>> 
>> end repeat
>> 
>> answer accum
>> 
>> end mouseUp
>> 
>> There are two characters that prevent the filter command from doing its
>> job: ASCII 91 (“[“) and ASCII 10, the return char.
>> 
>> 
>> 
>> Craig
>> 
>> 
>>> On Jan 24, 2024, at 12:51 PM, Craig Newman via use-livecode <
>> use-livecode@lists.runrev.com> wrote:
>>> 
>>> Brian.
>>> 
>>> Nope. Those two chars pass through the filter, er, filtered.
>>> 
>>> Again, I did not test the entire character set.
>>> 
>>> Craig
>>> 
>>>> On Jan 24, 2024, at 11:05 AM, Brian Milby via use-livecode <
>> use-livecode@lists.runrev.com> wrote:
>>>> 
>>>> The only other two that would cause issues are ? and * which are single
>> and multiple char wildcards respectively.
>>>> 
>>>> Brian Milby
>>>> br...@milby7.com
>>>> 
>>>>> On Jan 24, 2024, at 10:21 AM, Craig Newman via use-livecode <
>> use-livecode@lists.runrev.com> wrote:
>>>>> 
>>>>> I did not test the ASCII set exhaustively, but the culprit is the
>> char “[“ (ASCII 91). Any other char (including “]”) in the string works
>> correctly, that is, nothing is left after the filter command executes.
>>>>> 
>>>>> I do not know enough to say whether that particular char  does
>> something to the filter command, which may use regex somehow in its inner
>> workings.
>>>>> 
>>>>> Craig
>>>>> 
>>>>> Craig
>>>>> 
>>>>>> On Jan 23, 2024, at 9:45 PM, Brian Milby via use-livecode <
>> use-livecode@lists.runrev.com> wrote:
>>>>>> 
>>>>>> Not sure this is really a bug.  The default is to match a
>> wildcardPattern.  If you want to match [ then you must use [[] in the
>> pattern.
>>>>>> 
>>>>>> Brian Milby
>>>>>> br...@milby7.com
>>>>>> 
>>>>>>>> On Jan 23, 2024, at 9:02 PM, Neville Smythe via use-livecode <
>> use-livecode@lists.runrev.com> wrote:
>>>>>>> 
>>>>>>> Try this in the msg box:
>>>>>>> 
>>>>>>> put "aaa[bbb" into tStr; put line 1 of tStr into tLine; filter tStr
>> without tLine; put tStr
>>>>>>> I get (using MacOS, LC 9.6.11)
>>>>>>> 
>>>>>>> aaa[bbb
>>>>>>> 
>>>>>>> That is to say, the line is not filtered out.
>>>>>>> 
>>>>>>> And:
>>>>>>> 
>>>>>>> put "aaa[bbb" into tStr; filter tStr with tStr; put tStr
>>>>>>> 
>>>>>>> produces an empty string instead of the original string.
>>>>>>> 
>>>>>>> The bug occurs if the line contains the character “[“ anywhere; any
>> lines containing that character are ignored by both filter with and filter
>> without.
>>>>>>> 
>>>>>>> This is really serious, because I rely on the filter command a lot,
>> as I would think do many other developers!
>>>>>>> 
>>>>>>> Don’t know if it occurs with other characters, but I have never seen
>> it before. I discovered it when filtering lines with regular expressions.
>> Other special regexp characters I have tested do not trigger the bug.
>>>>>>> 
>>>>>>> Neville Smythe
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> use-livecode mailing list
>>>>>>> use-livecode@lists.runrev.com
>>>>>>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>>>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>>> 
>>>>>> _______________________________________________
>>>>>> use-livecode mailing list
>>>>>> use-livecode@lists.runrev.com
>>>>>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> use-livecode mailing list
>>>>> use-livecode@lists.runrev.com
>>>>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>>> 
>>>> _______________________________________________
>>>> use-livecode mailing list
>>>> use-livecode@lists.runrev.com
>>>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>> 
>>> 
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode@lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode@lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to