Группа, определенная (..)
, является группой 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
Ссылка
Я думаю, что вы сможете добиться того, чего хотите, используя следующее -
@Document
открытый класс Person {
@Id
@GeneratedValue()
String key;
@IdPrefix
String id;
@Field
@IdAttribute
String name;
@Field
private String city;
}
[ 117] Используйте@IdSuffix
, если хотите, чтобы значение в id было после имени. При создании вышеупомянутого объекта не присваивайте значение ключевой переменной самостоятельно, так как это значение не будет сгенерировано автоматически, если вы предоставите свое собственное в соответствии с документами - https://docs.spring.io/spring-data /couchbase/docs/current/reference/html/#couchbase.autokeygeneration.configuration.