В то время как я не могу напрямую объяснить, почему 2
, как "*?<*?"
.
Ваш запрос читается;
*
- Матч 0 или больше символов
?
- Вслед за одного персонажа
<
- за которой следуют <
характер
*
- следует 0 или более символов
?
- Отменено одним единственным персоналом
Для вашей логики вы хотите;
по крайней мере, три символа, прежде чем матчи с «<» происходит где-то на внутренней части строки
что приводит к запросе;
Dim rc As Boolean = "2" Like "???*<*"
Что читается;
???
- Матч по крайней мере 3-х символов
*
- Вслед за любым количеством дополнительных символов
<
- Вслед за <
характер
*
- Вслед за любым количеством дополнительных символов
Не прямой ответ Я знаю, но надеюсь, что это все равно поможет ...
EDIT:
Чтобы ответить на ваш комментарий ниже.
Вы бы хотели:
найти строку, которая имеет «<» в нем где-то по крайней мере один символ с обеих сторон
Какие результаты в запросе;
Dim rc As Boolean = "2" Like "*?<?*"
В результате это приведет к возврату False;
Dim rc As Boolean = "<" Like "*?<?*"
Однако;
Dim rc As Boolean = "2<2" Like "*?<?*"
Вернул бы истину.
Я надеюсь, что это поможет (подробнее!)
Не знаю, почему «2» соответствует «<». Тем не менее, он не требует трех символов раньше, поскольку '*' является подстановочным знаком для чего угодно (так что даже нулевые символы). –
Я знаю * соответствует чему угодно, поэтому «2» передает как *, так и? подстановочные знаки, но <все еще отсутствует в матче, как и второй?. –
Любопытно, что если вы удалите хотя бы одну из двух конечных подстановочных знаков, результат будет ложным. – Steve