Форум программистов, компьютерный форум, киберфорум
JavaScript: RegExp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 16.12.2018
Сообщений: 4

Поиск в массиве слов

16.12.2018, 11:42. Показов 5981. Ответов 4

Студворк — интернет-сервис помощи студентам
Сделать поиск в массиве слов по последовательности символов. Могут быть пропущены некоторые символы, но последовательность не должна нарушаться
Например есть некоторые символы "вст"
с помощью регулярки нужно сделать поиск в некотором массиве слов и вывести только слова, содержащие эти буквы в том порядке в котором они заданы
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.12.2018, 11:42
Ответы с готовыми решениями:

поиск слов в массиве
вот мой код программы. помогите реализовать чтобы искало совпадающие слова using System; using System.Collections.Generic; using...

Поиск 4буквенных слов в массиве
Необходимо все четырехбуквенные слова из массива в одной таблице(словарь)скопировать в другую таблицу(создав ее при этом)

Поиск в массиве повторяющихся слов
Привет!!! Помогите пожайлуйста с поиском в массиве служебных, повторяющихся слов. public class Ses { public static void...

4
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
16.12.2018, 12:17
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <script>
        let array = ["Сделать", "поиск", "в", "массиве", "слов", "по", "последовательности", "символов"];
        // Первый сопособ - циклом foreach 
        for (let word of array)
            if (word.match(/м.*в/s))
                console.log(word);
 
        // Второй способ - функциональным стилем
        array.filter(word => word.match(/м.*в/s)).forEach(e => { console.log(e); });
 
        // Третий способ - проредить произвольную подстроку поиска. В данном случае "мв"
        function notTogether(str) {
            return str.split``.join(".*");
        }
        array.filter(word => word.match(new RegExp(notTogether("мв"), "s"))).forEach(e => { console.log(e); });
 
    </script>
</body>
</html>
---
Прикольно, что MS Edge до сих пор не понимает ключ регулярного выражения "s". Ну и тормоз. Уже наверно год, как этот ключ в стандарте языка.
0
0 / 0 / 0
Регистрация: 16.12.2018
Сообщений: 4
17.12.2018, 19:57  [ТС]
У меня есть такой код
мне нужно в нем решить эту задачу, я попробовал ваши способы, но не получилось(
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
// Отслеживаем событие загрузки страницы, чтобы можно было работать
// с элементами страницы.
document.addEventListener("DOMContentLoaded", function() {
  // Получаем ссылки на блоки страницы со сравнением и заменой
  var comparison = document.querySelector(".comparison");
  var replacement = document.querySelector(".replacement");
  // Можете глянуть в консоли, что они собой представляют
  // Наведите на них мышь в консоли
  console.log(comparison);
  console.log(replacement);
 
  // Ниже устанавливаем true для того блока, который надо скрыть
  // Выбирайте какой блок скрыть согласно заданию.
  // Достаточно просто раскомментировать необходимую строку
  //comparison.hidden = true;
  replacement.hidden = true;
 
  // Если блок отображается, то запускаем функцию его обработки
  if (!comparison.hidden) handleComparison(comparison);
  //if (!replacement.hidden) handleReplacement(replacement);
});
 
/**
 * Функция для задач поиска и сравнения строк с регуляркой
 */
function handleComparison(comparison) {
 
  // ############ Ваш код должен быть ниже!!! ############ >>>>>>>>>
 
  // Здесь можно заполнить блок своими тестовыми примерами 
  // они отобразятся на странице в input полях
  var inputs = comparison.querySelectorAll("input.compare");
  // Первая половина примеров это ПРАВИЛЬНЫЕ примеры, которые подходят под регулярку
  inputs[0].value = ["приказ", "восстание", "повествование", "грех", "преступление", "приказ", "вступлените"] ;
  inputs[1].value = ["вступление", "лучший"];
  // Вторая половина примеров это НЕПРАВИЛЬНЫЕ примеры, которые не должны 
  // подходить под регулярку (без таких примеров можно было бы написать регулярку, 
  // которая бы распознавала абсолютно все примеры строк)
  inputs[2].value = "неявный";
  inputs[3].value = "четкий";
 
  /**
   * Функция, в которой с помощью регулярки вы решаете свою задачу
   * Данная функция запускается каждый раз при первой загрузке страницы для
   * каждого input-а. Затем эта функция запускается, когда пользователь обновляет
   * один из input-ов. При этом в value подается новое значение из input-а
   * В зависимости от возвращаемого значения функции соответствующий её вызову
   * input помечается как прошедший или не прошедший тест.
   * @param {String} value - содержимое input-а 
   */
  function checkCompare(value) {
    var regexx = /\w*в.*с.*т\w*/;
     
    // Здесь вы создаете регулярку и сравниваете с value
    // Функция должна вернуть true, если сравнение успешно
    // При возвращении из функции строки эта строка будет показана в браузере
    // Для задач поиска как раз необходимо возвращать строку с результатами поиска
    // Для задач поиска необходимо использовать методы match или exec
    // Эти методы возвращают массив. Вам необходимо преобразовать этот массив в
    // строку и вернуть из функции в отформатированном виде со всеми
    // значениями и индексами, получаемыми от match или exec
    // Если совпадений не найдено, необходимо вернуть false или пустую строку,
    return  false;
  
  }
 
  // <<<<<<<<< ############ Конец вашего кода!!! ############
 
  // Будем обрабатывать событие ввода в поле из всех input-ов блока 
  // comparison через всплытие события от конкретного input до comparison
  // Почти все события в JS всплывают вверх по DOM дереву
  comparison.oninput = function (event) {
    // Узнаем в каком input произошло событие ввода пользователя
    var inputElem = event.target;
    // Запускаем обработчик
    handler(inputElem);
  }
 
  // При загрузке страницы запускается проверка регулярок
  for (var index = 0; index < inputs.length; index++) {
    handler(inputs[index]);
  }
 
  function handler(inputElem) {
    // Вызываем вашу функцию проверки регулярки
    var checkResult = checkCompare(inputElem.value);
    var answer = inputElem.nextElementSibling;
    var compareResult = inputElem.nextElementSibling.nextElementSibling;
 
    // Выясняем есть ли родительского элемента класс .wrong-sample
    var wrongSampleFlag = inputElem.closest(".wrong-sample") ? true : false;
    // Если функция с регуляркой вернула boolean, то просто меняем цвет элемента
    if (wrongSampleFlag && typeof checkResult === "boolean") checkResult = !checkResult;
    // Если проверка успешна меняем цвет на положительный
    match(answer, checkResult);
    if (checkResult === true) {
      answer.textContent = wrongSampleFlag ? "Не совпало" : "Совпало";
    } else if (checkResult === false) {
      answer.textContent = wrongSampleFlag ? "Совпало" : "Не совпало";
    }
 
    // Если функция с регуляркой возвращает строку, то отображаем эту строку в браузере
    if (typeof checkResult === "string") {
      if (checkResult !== "") {
        compareResult.classList.add("visible");
        wrongSampleFlag = !wrongSampleFlag;
      }
      else compareResult.classList.remove("visible");
      match(answer, wrongSampleFlag);
      answer.textContent = checkResult === "" ? "Не найдено" : "Найдено";
    } else {
      compareResult.classList.remove("visible");
    }
    compareResult.querySelector(".message").textContent = checkResult;
  }
 
}
 
function match(elem, matchFlag) {
  // Переключаем классы CSS у элемента, чтобы поменять его цвет
  matchFlag = typeof matchFlag === "undefined" ? true : matchFlag;
  if (matchFlag === true) {
    elem.classList.remove("no-match");
    elem.classList.add("match");
  } else {
    elem.classList.remove("match");
    elem.classList.add("no-match");
  }
}
 
/**
 * Функция для задач замены в строке по регулярке
 */
function handleReplacement(replacement) {
 
  // ############ Ваш код должен быть ниже!!! ############ >>>>>>>>>
 
  // Здесь можно заполнить блок своими тестовыми примерами
  // они отобразятся на странице в input полях
  var enters = replacement.querySelectorAll("textarea.enter");
  enters[0].value = "";
  enters[1].value = "";
  enters[2].value = "";
 
  var expectations = replacement.querySelectorAll("textarea.expectation");
  expectations[0].value = "";
  expectations[1].value = "";
  expectations[2].value = "";
 
  /**
   * Функция, в которой с помощью регулярки вы решаете свою задачу
   * Данная функция запускается каждый раз при первой загрузке страницы для
   * каждой textarea.enter (у которой placeholder="Строка для замены"). 
   * Затем эта функция запускается, когда пользователь обновляет
   * одну из textarea. При этом в value подается новое значение из textarea.enter
   * Функция должна возвращать строку, которая является результатом замены согласно
   * условию вашей задачи.
   * Если результат замены не совпадает с тем, что находится в "textarea.expectation",
   * то делаем цвет textarea с результатом замены красным, иначе зеленым.
   * @param {String} value - содержимое textarea.enter 
   */
  function replace(value) {
    // Здесь вы создаете регулярку 
    // И строку, которая будет заменять совпадения регулярки в value
    // Функция должна вернуть строку с результатом замены    
    return "";
  }
 
  // <<<<<<<<< ############ Конец вашего кода!!! ############
 
  replacement.oninput = function(event) {
    // Узнаем в каком textarea произошло событие ввода пользователя
    var enterElem = event.target;
    // Запускаем обработчик
    handler(enterElem);
  };
 
  for (var index = 0; index < enters.length; index++) {
    handler(enters[index]);
  }
 
  function handler(enterElem) {
    var children = enterElem.parentNode.children;
    // Вызываем вашу функцию проверки регулярки
    var replaceResult = replace(children[0].value);
    if (!replaceResult) children[1].innerHTML = "<span>Результат замены</span>";
    else children[1].textContent = replaceResult;
    var expectationValue = children[2].value;
    // Если проверка успешна меняем цвет на положительный
    match(children[1], replaceResult && replaceResult === expectationValue);
  }
}
0
 Аватар для BART96
0 / 0 / 1
Регистрация: 04.02.2015
Сообщений: 37
05.01.2019, 01:03
Можно не прописывать событие DOMContentLoaded, если подключать скрипт с атрибутом defer

Сорри, что не по теме. Пытался, но погряз в бездне комментариев ><
0
0 / 0 / 0
Регистрация: 16.12.2018
Сообщений: 4
29.01.2019, 14:20  [ТС]
Можно на код не смотреть, мне нужно выполнить задачу вот здесь
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// ############ Ваш код должен быть ниже!!! ############ >>>>>>>>>
 
  // Здесь можно заполнить блок своими тестовыми примерами 
  // они отобразятся на странице в input полях
  var inputs = comparison.querySelectorAll("input.compare");
  // Первая половина примеров это ПРАВИЛЬНЫЕ примеры, которые подходят под регулярку
  inputs[0].value = ["приказ", "восстание", "повествование", "грех", "преступление", "приказ", "вступлените"] ;
  inputs[1].value = ["вступление", "лучший"];
  // Вторая половина примеров это НЕПРАВИЛЬНЫЕ примеры, которые не должны 
  // подходить под регулярку (без таких примеров можно было бы написать регулярку, 
  // которая бы распознавала абсолютно все примеры строк)
  inputs[2].value = "неявный";
  inputs[3].value = "четкий";
 
  /**
   * Функция, в которой с помощью регулярки вы решаете свою задачу
   * Данная функция запускается каждый раз при первой загрузке страницы для
   * каждого input-а. Затем эта функция запускается, когда пользователь обновляет
   * один из input-ов. При этом в value подается новое значение из input-а
   * В зависимости от возвращаемого значения функции соответствующий её вызову
   * input помечается как прошедший или не прошедший тест.
   * @param {String} value - содержимое input-а 
   */
  function checkCompare(value) {
    var regexx = /\w*в.*с.*т\w*/;
     
    // Здесь вы создаете регулярку и сравниваете с value
    // Функция должна вернуть true, если сравнение успешно
    // При возвращении из функции строки эта строка будет показана в браузере
    // Для задач поиска как раз необходимо возвращать строку с результатами поиска
    // Для задач поиска необходимо использовать методы match или exec
    // Эти методы возвращают массив. Вам необходимо преобразовать этот массив в
    // строку и вернуть из функции в отформатированном виде со всеми
    // значениями и индексами, получаемыми от match или exec
    // Если совпадений не найдено, необходимо вернуть false или пустую строку,
    return  false;
  
  }
 
  // <<<<<<<<< ############ Конец вашего кода!!! ############
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2019, 14:20
Помогаю со студенческими работами здесь

поиск слов в строковом массиве
ЗАДАНИЕ: Составить программу, которая читает построчно текст другой программы (ввести с клавиатуры) в MEMO на языке Pascal,...

Поиск в массиве разных слов и вывод их количества
Есть одномерный массив русских слов свыше миллиона, разделитель пробел. Количество элементов известно. Необходимо создать двумерный...

Поиск слов в многомерном массиве, с однократным выводом сообщения о не найденном значении
Всем привет! Возникла не сложная (думаю для многих) проблемка. Создал многомерный простой массив из слов. Суть скрипта в поиске нужного...

Работа со строками. У всех ли слов в одномерном массиве слов нет буквы «о»?
У всех ли слов в одномерном массиве слов нет буквы «о»

В массиве слов найти пару слов,из которых одно является обращением другого
Напишите программу. В массиве слов найти пару слов,из которых одно является обращением другого.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru