Как следует из других ответов, *+
является «притяжательным квантором». Он соответствует предыдущему элементу как можно чаще, как жадный квантификатор, но никогда не отступает.
Почему Полезно? Только как оптимизация производительности. Кроме того, только как оптимизация производительности , когда регулярное выражение не соответствует. Это важный момент для понимания регулярных выражений: их наихудшая производительность всегда возникает, когда не соответствует.
В зависимости от используемого двигателя регулярных выражений и деталей самого регулярного выражения, производительность худшего случая иногда может быть потрясающе плоха. Для простого примера возьмите это регулярное выражение: a*a*a*b
, сопоставленное с этой строкой: aaaaac
.
Столкнувшись с такой ситуацией, стандартный «НКА» типа регулярных выражений будет делать что-то вроде этого:
- Попробуйте соответствие 1-ые
a
5 раз, 2-й a
ноль раз, и 3-й a
ноль раз.
- Попробуйте сопоставить
b
с c
- это терпит неудачу.
- «Обратный путь» и матч 1-го
a
4 раза, 2-й 1 раз и 3-е ноль раз.
- Повторите попытку, используя
b
- он не работает.
- Возвратитесь назад, попробуйте 1-й
a
4 раза, 2-ое нулевое время и 3-й 1 раз.
- ...
- Backtrack, попробуйте 1-й
a
3 раза, 2-й в 2 раза, а 3-й ноль раз ...
(я думаю, что вы можете заполнить следующие несколько сотен шагов по самостоятельно.)
Если регулярное выражение было a*+a*a*b
, этого никогда не произойдет. Это будет больше похожее:
- Попробуйте сопоставить первый
a
5 раз, второе нулевое время и 3-е ноль.
- Попробуйте сопоставить
b
- это не удается.
- С 1-го
a
является «притяжательным», как только он соответствует 5 раз, он никогда не сможет попытаться сопоставить меньшее количество раз. И так как нет a
s слева в строке для другого a*
s для соответствия, они могут совпадать только с нулевым временем. Нет ничего, что можно было бы попробовать, поэтому матч в целом не удался.
- Нет шага 4. Вы готовы. Пока ваши друзья ждут, чтобы их регулярные выражения закончили выполнение, вы можете отбросить свои каблуки и взломать свой холодный напиток по своему выбору.
http://www.regular-expressions.info/possessive.html – eclipsis