Как сопоставить шаблон регулярного выражения со строкой, указав в качестве начальной строки номер и конечная строка № в пределах которого должен выполняться поиск? - PullRequest
2 голосов
/ 08 марта 2010

Я пишу небольшой скрипт для Windows в javascript / jscript для поиска соответствия регулярному выражению со строкой, которую я получил, манипулируя файлом.

Я знаю номер строки для начала и окончания поиска. Но я застрял на этой позиции на некоторое время.

Ответы [ 2 ]

2 голосов
/ 08 марта 2010

Вам нужно будет сопоставить все строки, предшествующие интересующему вас биту, затем захватить нужную часть в группе захвата. Например, чтобы извлечь четвертую и пятую строки, вы можете использовать это регулярное выражение:

/^(?:.*(?:\r\n|[\r\n])){3}((?:.*(?:\r\n|[\r\n])){2})/

Часть, которую вы хотите, будет доступна в группе захвата # 1.

1 голос
/ 09 марта 2010

Лучший способ взглянуть на что-то подобное - не слишком усложнять свое регулярное выражение - вы можете сделать его нечитаемым и запутанным, особенно если ваши навыки регулярных выражений не очень хороши. Сначала упростите вещи - разбейте документ на массив строк, выделите строку и затем выполните регулярное выражение. Выполнение вашего регулярного выражения на меньшей строке таким способом может оказаться намного быстрее для очень больших текстовых файлов.

// Assuming file is a FileSystemObject TextStream object:
var lines = file.ReadAll().split("\r\n"); // split based on Windows newline

// Arrays have zero-based indexes, so the line you need is your line number -1
var match = lines[4].match(myRegEx);      // lines[4] is line 5 of the string

// If you need it to span multiple lines, extract and join the lines you need:
var specificLines = lines.splice(4, 6);   // extract the 5th and 6th lines 
specificLines.match(myRegEx);             // don't forget the regex's /m modifier

splice возвращает элементы массива от начального индекса до и исключая конечный индекс. Вы также можете предоставить параметр limit методу split, чтобы остановить разбиение после определенного числа совпадений. Это должно улучшить скорость работы с большим файлом, где нужные строки находятся не в конце.

Глоссарий:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...