【问题标题】:JScript regexp: start of line doesn't work?JAVAScript 正则表达式:行首不起作用?
【发布时间】:2014-06-13 20:29:25
【问题描述】:

我想从配置文件中截取路径:

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);

但我的代码没有找到所需的字符串。另一方面,如果我删除“插入符号”(^),它就可以工作。这不是一个解决方案,因为我想确保从真正以该词开头的行中获取数据。

更新: 事实上 '\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

我做错了什么?

【问题讨论】:

    标签: regex windows jscript


    【解决方案1】:

    A ^ boundary 通常锚定到整个输入字符串的开头,而不是每一行的开头。

    m flag 可用于锚定每一行:

    var re = new RegExp('^datadir="(.*)"', 'gm');
    

    例如:http://jsfiddle.net/PjLd4/

    【讨论】:

    • +1,我读得太快了,还以为他的\n 被烧成了字符串。拉了我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 2021-06-18
    • 2014-09-12
    • 2015-07-14
    • 2018-02-20
    相关资源
    最近更新 更多