Найти k sh функций, используя nodejs regex - PullRequest
0 голосов
/ 16 апреля 2020

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

\s*^(?!#)*[A-Za-z0-9_]*\(\)

Проблема в том, что это регулярное выражение, кажется, соответствует каждой строке в тестовом файле, а не только функциям, которые я хочу.

Хорошего дня

РЕДАКТИРОВАТЬ:

function match(array, regex) {//Rematcher
    back = [];
    for (let i = 0; i < array.length; i++) {
        let line = array[i];
        if (regex.test(line)) {
            back.push(line);
        }
    }
    return back
}


function find(text) {//function finder

    let reg = new RegExp("^(?!#)*\w*\(\)");

    return reMatcher.match(text, reg);

}




let content = fs.readFileSync(file, "UTF-8");//starting point

let functions = find_functions.find(content);

content = content.split("\n");

// Testfile

meldet ()

{если верно

затем

если true

, то

эхо-псевдокод

fi

эхо-псевдокод

фи

}

Регулярное выражение должно соответствовать только первой строке, но вместо этого оно должно соответствовать каждой строке, а также не должно совпадать в строках, где # находится перед заголовком функции

1 Ответ

0 голосов
/ 16 апреля 2020

В шаблоне \s*^(?!#)*[A-Za-z0-9_]*\(\) вы можете опустить \s* перед началом привязки строки.

Поскольку вы не соответствует # в классе символов, вы также можете опустить отрицательный взгляд (?!#)


Вместо reMatcher.match(text, reg); вы можете использовать match в переменной text.

Примечание для двойного экранирования обратной косой черты в конструкторе RegExp.

Вы можете обновить функцию find до:

function find(text) {
    let reg = new RegExp("\\s*^(?!#)*[A-Za-z0-9_]*\\(\\)");
    return text.match(reg)[0]; // Or first check the value before indexing
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...