Регулярное выражение JScript: начало строки не работает?

#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 записали в строку. Вытащил мой ответ.