Как изменить цвет шрифта UISegmentedControl

Группа повторных захватов: номер группы остается тем же

Группа, определенная (..), является группой 1. Конец квантора + повторяет его. Каждый раз, когда движок может повторять группу (совпадающие с двумя символами), группа 1 перезаписывается.

  • Когда двигатель начинает совпадать, он захватывает aa в группу 1
  • Затем он фиксирует bb до группы 1
  • . Затем захватывает cc в группу 1.

Когда вы проверяете группу 1, двигатель возвращает cc. Все остальные записи потеряны.

(Исключением является механизм .NET, который также возвращает cc, а также позволяет проверять промежуточные захваты благодаря объекту CaptureCollection. Он будет содержать aa, bb и cc .)

С помощью (..)+(...), почему группа 1 содержит aa? Откат!

Чтобы понять это, нам снова нужно следовать по пути движка регулярного выражения.

  • Еще раз, когда двигатель начинает совпадать, он захватывает aa в группу 1
  • Опять же, он повторяет группу (..) и фиксирует bb в группе 1
  • . Опять же, он повторяет группу (..) и захватывает cc в группу 1
  • Теперь двигатель пытается сопоставить (...). Он терпит неудачу: нет никаких символов, оставшихся для потребления.
  • Двигатель отступает как в строке, так и в шаблоне регулярных выражений. + означает один или несколько раз, и мы сопоставили .. три раза, поэтому мы можем дать один или даже два. На этом этапе двигатель отказывается от последнего совпадения количественной группы (..)+, которая является cc. Мы вернулись, когда группа 1 была bb.
  • Двигатель снова пытается сопоставить (...). Осталось всего два символа: cc, поэтому он снова не работает.
  • Двигатель отступает, отказываясь от последнего совпадения количественной группы (..)+, которая является bb. На этом этапе группа 1 снова aa.
  • Двигатель снова пытается сопоставить (...). Успешно: группа 2 - bbc, а группа 1 - aa

Ссылка

57
задан Costique 19 February 2012 в 11:04
поделиться