假设我有这一行:
print "Hello world!" out.txt
我想把它分成:
print
"Hello world!"
out.txt
匹配这些的正则表达式是什么?
请注意,每个人之间必须有空格。例如,如果我有这个:
print"Hello world!"out.txt
我会得到:
print"Hello
world!"out.txt
我正在使用的语言是Haxe。
答案 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);
}
编辑: 正如评论中所指出的,如果你的用例是拆分命令行的不同部分,那么最好让解析器处理它,而不是正则表达式。
这些库可能有所帮助:
答案 1 :(得分:0)