"$islandPositions[D][0]"
"$boatPosition[single][A][2]"
想把这样的字符串转化成对象,最后返回一个这样的数组
['islandPositions', 'A, '0']
['boatPosition', 'single', 'A', '2']
希望能有人回答,在线等
"$islandPositions[D][0]"
"$boatPosition[single][A][2]"
想把这样的字符串转化成对象,最后返回一个这样的数组
['islandPositions', 'A, '0']
['boatPosition', 'single', 'A', '2']
希望能有人回答,在线等
正则没啥思路,不过可以通过js把这个问题解决了。.replace(/\]\[/g, '|').replace(']', '').replace('[','|').replace('$', '').split('|')
"$islandPositions[D][0]".replace(/\$/g,"").replace(/\W/g,',').replace(/,,/g,",").replace(/,$/g,"").split(",")
"$boatPosition[single][A][2]".replace(/\$/g,"").replace(/\W/g,',').replace(/,,/g,",").replace(/,$/g,"").split(",")
用正则可能还比较麻烦,以下是php的实现
$str = '$boatPosition[single][A][2]';
$bracketsUnit = '(\[(\w+)\])';
$preg = '/\$([^\[]+)'. implode("", array_fill(0, substr_count($str, "["), $bracketsUnit)) .'/is';
preg_match($preg, $str, $m);
function parse(str) {
return result = [
str.match(/^\$(\w+[\w|\d]*)/)[1],
...(str.match(/\[([\w|\d]+)\]/g) || [])
.map(item => item.match(/([\w|\d]+)/)[1])
];
}
console.log(parse('$islandPositions[D][0]'));
console.log(parse('$boatPosition[single][A][2]'));
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决