#regex #windows #jscript
#регулярное выражение #Windows #jscript
Вопрос:
Я хочу вырезать путь из файла конфигурации:
var out = '#Path to the database root';
out = 'ndatadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/"';
out = 'nblah-blah-blah-blah-blah';
var re = new RegExp('^datadir="(.*)"', 'g');
var result = out.match(re);
if (result == null){
WScript.Echo("datadir not found");
}
WScript.Echo("datadir=" RegExp.lastParen);
но мой код не нашел требуемую строку. С другой стороны, если я удалю символ ‘caret’ ( ^
), это сработает. Это не решение, потому что я хочу убедиться, что я получаю данные из строки, которая действительно начинается с этого слова.
Обновление: на самом деле ‘ n’ действительно новая строка для меня, несмотря на одинарную кавычку. Например
WScript.Echo("out=" out);
выдает
out=#Path to the database root
datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/"
blah-blah-blah-blah-blah
Что я делаю не так?
Ответ №1:
^
Граница обычно привязывается к началу всей входной строки, а не к началу каждой отдельной строки.
Вместо этого m
флаг можно использовать для привязки к каждой строке:
var re = new RegExp('^datadir="(.*)"', 'gm');
Пример: http://jsfiddle.net/PjLd4 /
Комментарии:
1. 1, я читал слишком быстро и думал, что его
n
записали в строку. Вытащил мой ответ.