将字符串拆分为多个部分,包括引用的字符串

时间:2015-09-07 02:47:05

标签: regex string haxe

假设我有这一行:

print "Hello world!" out.txt

我想把它分成:

print
"Hello world!"
out.txt

匹配这些的正则表达式是什么?

请注意,每个人之间必须有空格。例如,如果我有这个:

print"Hello world!"out.txt

我会得到:

print"Hello
world!"out.txt

我正在使用的语言是Haxe。

2 个答案:

答案 0 :(得分:2)

扩展Mark Knol的答案,到目前为止,这应该对所有测试字符串都有效:

static function main() {
    var command = 'print "Hello to you world!" out.txt';

    var regexp:EReg = ~/("[^"]+"|[^\s]+)/g;

    var result = [];
    var pos = 0;

    while (regexp.matchSub(command, pos)) {
        result.push(regexp.matched(0));
        var match = regexp.matchedPos();
        pos = match.pos + match.len;
    }

    trace(result);
}

演示:http://try.haxe.org/#5c0B1

编辑: 正如评论中所指出的,如果你的用例是拆分命令行的不同部分,那么最好让解析器处理它,而不是正则表达式。

这些库可能有所帮助:

答案 1 :(得分:0)

regex demo

\s(?![\w!.]+"\s)

这两个案例的一个例子,也许有人有更好的解决方案