Жадное соответствие. Поведение регулярных выражений по умолчанию должно быть жадным. Это означает, что он пытается извлечь как можно больше до тех пор, пока он не будет соответствовать шаблону, даже если меньшая часть была бы синтаксически достаточной.
Пример:
import re
text = "Regex Greedy Matching Example "
re.findall('<.*>', text)
#> ['Regex Greedy Matching Example ']
Вместо сопоставления до первое вхождение «>», оно извлекло всю строку. Это по умолчанию жадное или «воспринимать все» поведение регулярного выражения.
С другой стороны, ленивое сопоставление «берет как можно меньше». Это можно сделать, добавив ?
в конец шаблона.
Пример:
re.findall('<.*?>', text)
#> ['', '']
Если вы хотите получить только первое совпадение, используйте поиск вместо этого.
re.search('<.*?>', text).group()
#> ''
Источник: Примеры Regex для Python
Используйте java.util.ArrayList
. Там вам не нужно думать об индексе, и это реализация resizable-array.
Во время создания массива по умолчанию все значения равны нулю, поэтому, если вы не вставляете какое-либо значение ни в какой индекс (может быть в конец или начало или середина массива), он будет равен нулю. Поэтому вы должны пометить нулевую проверку.
Поскольку это ваше назначение, трюк заключается в том, чтобы добавить переменную, чтобы следить за количеством добавленных элементов.
Таким образом, вы можете иметь переменную public int size = 0
и изменять вы добавляете и удаляете операции, чтобы увеличивать и уменьшать эту переменную всякий раз, когда вы добавляете или удаляете элемент.
Затем вы можете добавить простой метод, чтобы проверить, нужно ли вам расширять массив
if (size == array.length)
expandArray