Я написал код javascript, который обрабатывает пакет текста на куски по 100 символов и выполняет совпадение регулярного выражения (т.е. 5 апельсинов, 6 яблок, 20 груш в тексте) отдельно.
Мне нравится, что скрипт regex-match будет автоматически запускаться для каждого фрагмента (на 100 символов) и выводить результаты совпадения в последовательности, предпочтительно отформатированной внутри таблицы.
Проблема: 1) Функция регулярного выражения не запускается на новых фрагментах каждый раз, когда строка разрезается на 100 символов 2) Я изо всех сил пытаюсь зациклить функцию регулярного выражения
Ваша помощь очень ценится.
var str = " Apple Pears Bananas Apple Pears Bananas Apple Pears Bananas Apple Pears Bananas Apple Pears Bananas Apple Pears Bananas Apple Pears Bananas....";
var chunks = [];
var chunkSize = 100;
while (str) {
if (str.length < chunkSize) {
chunks.push(str);
break;
} else {
chunks.push(str.substr(0, chunkSize) + total() + "<p></p>");
/// I tried to run the regex match function in this line for each new chunk of 100 characters but failed
str = str.substr(chunkSize);
}
}
function getMatches(string, regex, index) {
index || (index = 1);
var matches = [];
var match;
while (match = regex.exec(string)) {
matches.push(match[index]);
}
return matches;
}
function total() {
var myString = str;/// I'm trying to pick up each new chunks (100 characters)
var myString;
var myRegEx_apple = /(?:^|\s)apple(.*?)(?:\s|$)/g;
var matches = getMatches(myString, myRegEx_apple, 1);
document.getElementById("myRegEx_apple").innerHTML = (matches.length + ' apple matches found' + '\n');
var myRegEx_pears = /(?:^|\s)pears(.*?)(?:\s|$)/g;
var matches = getMatches(myString, myRegEx_pears, 1);
document.getElementById("myRegEx_pears").innerHTML = (matches.length + ' pears matches found' + '\n');