私はJSの「コマンドライン」エミュレータを作っています。
私は正規表現を持っています: /([^\s"]+)|"([^\s"]+)"/g
. echo
、wyświetl
、などの単一の単語に一致させたいjd923h90asd8
。また、「文字列リテラル」と一致させたい - "this is a string"
orのようなもの"f82h3 23fhn aj293 dgja3 xcn32"
。
match
入力文字列に対してメソッドを使用して、すべての一致の配列を取得しています。しかし、問題は次のとおりです。正規表現が「文字列リテラル」に一致し、文字列を配列に返す場合、この文字列には二重引用符が含まれます。二重引用符は必要ありませんが、問題は、なぜ Regexp に二重引用符が含まれているのかということです。正規表現では、引用符はグループ""
から除外されます。()
Regexp にすべてが含まれているのはなぜですか?
編集:
var re = /([^\s"]+)|"([^\s"]+)"/g;
var process = function (text) {
return execute(text.match(re));
}
var execute = function (arr) {
console.log(arr);
try {
//... apply a function with arguments...
} catch (e) {
error(arr[0]+": wrong function");
return "";
}
}
入力に対してecho abc "abc def" "ghi"
Regexp は array を返します["echo", "abc", "abc", "def", ""ghi""]
。その入力から返される正規表現を作成したいと思います["echo", "abc", "abc def", "ghi"]
。