与えられた文字列:
おかしい-> A_gre$"["at- >見える->素晴らしい/*54[[面白い"->["->[素晴らしい->yolo]->見える]][素晴らしい] ->a2afg34423* /--> yolo "-> ["
配列に分割:
- 面白い
- A_gre $'[' at
- 見える
- great / * 54 [[funny'-> ['-> [great-> yolo]-> look]] [great]
- a2afg34423 */-
- yolo'-> ['
正規表現ソリューション??!?
基本的に、角かっこの周りに引用符がある場合は、角かっこが開閉区切り文字として機能することは避けてください。そうでない場合は、角かっこと閉じかっこの間のテキストが無効になっていることを確認してください。正規表現を使用してこれをどのように達成しますか?
私のパーサーソリューション テスト
var s = "funny -> A_gre$' [ 'at -> looks -> great/\*54[ [funny ' -> [ ' ->"
+ "[great -> yolo] -> looks]][great] -> a2afg34423*/- -> yolo' -> [ '",
p = 0,
z = [0],
q = 0,
x = s.split('');
//Looking for \" not \'
for(var i = 0; i< x.length; i++){
var b = x[i],
c = x[i + 1],
q = b == "'" ? ++q : q,
p = !(q % 2) ? b == '[' ? ++p : b == ']' ? --p : p : p;
if(b == '-' && c == '>' && !p && !(q % 2))
z.push(i + 2);
if(i == x.length - 1){
z.push(x.length); x = [];
for(var u = 0; u < z.length; u++)
z[u + 1] !== undefined ?
x.push(s.substring(z[u], z[u + 2] !== undefined ?
z[u + 1]-2 : z[u + 1]).trim()) : 0;
}
}
console.log(x)
Ouput:
->>> [
"funny",
"A_gre$' [ 'at",
"looks",
"great/*54[ [funny ' -> [ ' -> [great -> yolo] -> looks]][great]",
"a2afg34423*/-",
"yolo' -> [ '"
]