Мне нужно переместить 4-е измерение моего массива Java в 1-е измерение:
myArray[a][...][...][b]
к
myArray[b][...][...][a]
Мне нужно сделать это для всех имен измерений. Моя идея состоит в том, чтобы сделать это с помощью функции поиска и замены в Atom с использованием регулярных выражений, но я недостаточно знаком с ними, чтобы сделать это быстро. В принципе, это то, что я ищу:
myArray([][][])([])
к
myArray([])([][][])
Было бы замечательно, если бы вы предоставили мне необходимые для этого поля «Найти и заменить».
Моя проблема в том, что массив принимает множество форм, а проект огромен. Например, иногда массив имеет следующую форму: myArray[a][b][c][d], а иногда — такую форму: myArray[e][f][g][h]. Мне нужно учитывать все, что может быть в этих скобках.




Используйте это регулярное выражение:
myArray(\[.+?])(\[.+?]\[.+?])(\[.+?])
И эта замена:
myArray$3$2$1
Объяснение:
Регулярное выражение соответствует myArray, за которым следуют три набора квадратных скобок. Он захватывает первую пару скобок в группу 1, вторую и третью пары в группу 2 и последнюю пару в группу 3.
Заменой является myArray, за которым следует то, что находится в группе 3, затем то, что находится в группе 2, и, наконец, то, что находится в группе 1.
Если одно из индексных выражений содержит сам [ ... ], это не сработает.
Это именно тот ответ, который я искал. Теперь я смогу опираться на это для будущих приложений. Спасибо, и я приму этот ответ как можно скорее.
Что здесь делает вопросительный знак? Я удалил все вопросительные знаки и получил меньше просмотров.
@Bill Знак вопроса означает «ленивый». См. stackoverflow.com/questions/2301285/…
Это также работает:
Находка: myArray(\[[^\]]*\])(\[[^\]]*\]\[[^\]]*\])(\[[^\]]*\])
Заменить: myArray$3$2$1
Просто найдите [b] и замените на [a], затем сделайте все наоборот, но пропустите 4-е измерение в конце??