зеркало кода: использование регулярного выражения

Я пытаюсь использовать регулярное выражение для простого режима в зеркале кода.

Мой минимальный код для его тестирования:

CodeMirror.defineMode("regex", function() {
  return {
    token: function(stream, state) {
    console.log(stream);
    a = stream.match(/word/);
    console.log(a);
    stream.skipToEnd();
    return null;
    }
  };
});

Результат первого прохода:

Object { start: 74, pos: 74, string: "This is a sentence with word and key in it, and word and key are repeated.", tabSize: 4, lastColumnValue: 0, lastColumnPos: 0, lineStart: 0 } regex.js:5
null

Если я использую строку «word», а не регулярное выражение, в журнале будет «undefined» вместо «null».

В документации зеркала кода (http://codemirror.net/doc/manual.html) говорится ( совпадение функций):

шаблон может быть либо строкой, либо регулярным выражением, начинающимся с ^

что мне неясно (^ означает «не» для регулярного выражения?)

Это первый раз, когда я использую codemirror, регулярное выражение и javascript, поэтому я могу упустить что-то очевидное.


person Vince    schedule 28.10.2014    source источник
comment
я думаю это ^word   -  person Avinash Raj    schedule 28.10.2014


Ответы (2)


я думаю, что это ^word .^ называется начальным якорем, который относится к началу строки, а $ относится к концу строки. Если ^ присутствует в начале класса символов [], то он представляет собой отрицание данных символов в списке.

Пример: [^:] — соответствует любому символу, но не :.

person Avinash Raj    schedule 28.10.2014

хорошо понял

a = stream.match(/word/);

проверяет регулярное выражение в текущей позиции потока, т.е. если поток находится в начале:

"This is a sentence with word and key in it, and word and key are repeated."

затем он проверит только первую букву, остановится на «T», потому что она не соответствует регулярному выражению, и вернет «null».

Таким образом, имеет смысл продвигать поток, пока регулярное выражение не выполняется, что объясняет, почему использование ^ рекомендуется.

person Vince    schedule 04.11.2014