Есть ли способ для регулярных выражений PCRE подсчитать, сколько вхождений символа он встречает (n), и прекратить поиск после того, как он обнаружил n вхождений другого символа (в частности, {
и }
).
Это захват кодовых блоков (которые могут иметь или не иметь кодовые блоки, вложенные в них).
Если это упрощает, то ввод будет однострочной строкой, и единственными символами, кроме скобок, являются цифры, двоеточия и запятые. Входные данные должны соответствовать следующим критериям, прежде чем даже попытаться извлечь кодовые блоки:
$regex = '%^(\\d|\\:|\\{|\\}|,)*$%';
Все фигурные скобки будут иметь совпадающую пару и правильно вложены.
Я хотел бы знать, можно ли этого достичь, прежде чем я начну писать скрипт, чтобы проверять каждый символ в строке и подсчитывать каждое вхождение фигурной скобки. Регулярные выражения будут намного более дружественными к памяти, так как эти строки могут иметь размер несколько килобайт!
Спасибо, мниз.
Решение
PCRE: ленивый и жадный одновременно (притяжательные квантификаторы)