El 20/10/2021 a las 22:59, Bart via lazarus escribió:

Range syntax: [a-z]
Set syntax: [abcdefghijklmnopqrstuvwxyz]

What would be the effective difference between [a-e] and [abcde] then?
I did understand that both meant: a single charcter being either 'a',
'b', 'c', 'd', or 'e'?

Hello,

Technically the set requires one check for every possible char and a range only two checks, but the most important one is the easy to write for every day situations. It is quite usual to try to match strings that starts with a number and not with a letter, so you write a mask like:

"[0-9]*"

Of course you can write it with sets:

"[0123456789]*"

Now you need to match a string that starts with a number and the second char must be a letter, with a set it will be too large and unclear:

"[0123456789][abcdefghijklmnopqrstuvwxyz]*"

with ranges:

"[0-9][a-z]*"

So the question is, why sets if ranges can be used ? Because sometimes you need to exclude strings that starts with number 1:

"[0234567989][a-z]"

Naming them different just confuses me (which probably is my fault).

Because they are different beast in the code and in the syntax, many times ranges apparently are syntactic sugar for sets, but ranges have a begin and an end, and both have a mission, one, ranges, add clarity to the desired match, and the second, sets, add flexibility to the mask write.

Most times when you need support for one also need for the other, so when needs to be disabled, the other, quite sure, needs to be disabled also.

--

--
_______________________________________________
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to