Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Регулярные выражения / 13 сообщений из 13, страница 1 из 1
23.02.2018, 18:11
    #39606601
vdekameron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения
Добрый день! Не могу понять логики данных примеров, буду признателен если объясните.

Код: javascript
1.
console.log("hi".match(/\s*/g)); //["", "", ""]


Если паттерн просто состоит из \s тогда все логично - null а когда квантификатор * возвращает три пустых строки???

Код: javascript
1.
console.log("hi".match(/[hi]*/g)); //["hi", ""]


Тут аналогично, без квантификатора закономерно вернет отдельно "h" и "i" а откуда пустая строка при использовании квантификатора???

Код: javascript
1.
console.log("hi".match(/[.]*/g)); // ["", "", ""]


Тут вообще в шоке, точка означает любой символ кроме перевода строки....каким образом три пустые строки???
...
Рейтинг: 0 / 0
24.02.2018, 02:16
    #39606661
Ы2
Ы2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения
vdekameron,
Kleene star значит «повторяется 0 или более раз», следовательно, в строке 'hi' пробельный символ 0 раз можно найти трижды:
— перед h;
— между h и i;
— после i.
Остальные примеры разбираются аналогично.
...
Рейтинг: 0 / 0
24.02.2018, 10:19
    #39606669
vdekameron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения
Ы2Kleene star значит «повторяется 0 или более раз», следовательно, в строке 'hi' пробельный символ 0 раз можно найти трижды:
Где же там пробельный символ...там строка без пробелов идет.

Ы2Остальные примеры разбираются аналогично.
Во втором примере я ищу или i или h правдо жадно поэтому должно найти hi но откуда берется пробел?
В третьем примре вообще ищу любой символ а находит вместо символов пробелы....не понимаю
...
Рейтинг: 0 / 0
24.02.2018, 11:27
    #39606682
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения
vdekameron,

вот поиграйтесь тут: https://regex101.com/
думаю станет понятнее
...
Рейтинг: 0 / 0
24.02.2018, 12:12
    #39606698
vdekameron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения
skyANAвот поиграйтесь тут: https://regex101.com/
думаю станет понятнее

Полезный ресурс...но там только что означает каждый символ в паттерне и что получается в итоге, а почему так происходит....вопрос остается открытым.
...
Рейтинг: 0 / 0
24.02.2018, 13:12
    #39606715
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения
* Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy)
...
Рейтинг: 0 / 0
24.02.2018, 13:19
    #39606716
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения
А в квадратных скобках точка означает точку, а не любой символ. Про это там тоже написано.

Вообщем читайте внимательно.
...
Рейтинг: 0 / 0
24.02.2018, 13:23
    #39606719
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения
И если Вы не заметили ещё и Quick Reference , где описаны в том числе и Quantifiers , то советую посмотреть, чем отличается звёздочка от плюсика
...
Рейтинг: 0 / 0
24.02.2018, 16:34
    #39606744
vdekameron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения
skyANA * Quantifier — Matches between zero and unlimited times, as many times as possible, giving back as needed (greedy)
Ну я знаю что означает упрощенный квантификатор звездочка -{0,}. Но вы так и не объяснинили толком) Я все внимательно там прочитал. Все получается логично и я не спорю с этим но я не понимаю этой логики.
Все же почему возвращаются три пустые строки, если ищем /\s*/. Ведь в строке нет ни одного пробела!!! По этому логично если бы вернулось null
...
Рейтинг: 0 / 0
24.02.2018, 16:35
    #39606745
vdekameron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения
skyANAА в квадратных скобках точка означает точку, а не любой символ. Про это там тоже написано. Да, там тоже это написано, я это тоже понимаю, но тогда мы ищем именно точку, в строке нет ни одной точки, откуда берутся эти пустые строки снова.....
...
Рейтинг: 0 / 0
24.02.2018, 16:36
    #39606746
Ы2
Ы2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения
vdekameronЫ2Kleene star значит «повторяется 0 или более раз», следовательно, в строке 'hi' пробельный символ 0 раз можно найти трижды:
Где же там пробельный символ...там строка без пробелов идет.
Правильно. Любой символ обнаруживается 0 раз везде, где его нет :)
...
Рейтинг: 0 / 0
24.02.2018, 17:01
    #39606751
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения
vdekameron,

в начале строки ноль раз встречается пробельный символ, после буквы h и после i

Может начнёте уже читать и вникать? Понимаю, что Вы ожидали иного поведения, потому как не до конца разобрались.
Ну вот теперь разобрались
...
Рейтинг: 0 / 0
25.02.2018, 11:07
    #39606922
vdekameron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Регулярные выражения
skyANAНу вот теперь разобрались

О боги! Неужели до меня дошло)) Спасибо за терпение ваше!
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Регулярные выражения / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]