Действительно ли возможно заставить ре найти наименьшее соответствие при использовании жадных символов [дубликат]

Существует много способов приняться за решение проблем с двухфазной фиксацией. Почти все они завершают как некоторый вариант Паксоса трехфазный алгоритм фиксации. Mike Burrows, который разработал Полный сервис блокировки в Google, который основан на Паксосе, сказал, что существует два типа распределенных алгоритмов фиксации - "Паксос и неправильные" - в лекции, которую я видел.

Одна вещь, которую мог сделать разрушенный узел, когда это повторно просыпается, говорят, что "Я никогда не слышал об этой транзакции, это должно было фиксироваться?" координатору, который скажет его, каково голосование было.

Принимают во внимание, что это - пример более общей проблемы: разрушенный узел мог пропустить много транзакций, прежде чем он восстановится. Поэтому ужасно важно, чтобы после восстановления это говорило или с координатором или с другой копией прежде, чем сделать себя доступным. Если сам узел не может сказать, отказал ли он, то вещи больше принимают участие, но становятся все еще послушными.

при использовании системы кворума для чтений базы данных несоответствие будет замаскировано (и сообщено самой базе данных).

5
задан Dave Berk 15 September 2009 в 18:07
поделиться

4 ответа

В своем шаблоне можно использовать квалификатор сопротивления (для получения дополнительных сведений см. документацию Python на *? , +? и ?? операторы):

<bla><blabla>87765.*?</blabla><bla>

Или исключить < из возможных сопоставленных символов:

<bla><blabla>87765[^<]*</blabla><bla>

только , если между и .

14
ответ дан 18 December 2019 в 09:51
поделиться
I believe the regex
<bla><blabla>87765.*?</blabla><bla>
can produce catastrophic backtracking.

Instead, use:
<bla><blabla>87765[^<]*</blabla><bla>

Using atomic grouping (I'm not sure Python supports this), 
the above regex becomes 
<bla><blabla>(?>(.*?<))/blabla><bla>

Все, что находится между (?> ...), обрабатывается обработчиком регулярных выражений как один токен, как только обработчик регулярных выражений покидает группу. Поскольку вся группа представляет собой один токен, возврат с возвратом невозможен после того, как механизм регулярных выражений обнаружит соответствие для группы. Если требуется возврат с возвратом, движок должен вернуться к токену регулярного выражения перед группой (каретка в нашем примере). Если перед группой нет токена, регулярное выражение должно повторить все регулярное выражение в следующей позиции в строке. Обратите внимание, что мне нужно было включить в группу «<», чтобы обеспечить атомарность. Достаточно близко.

1
ответ дан 18 December 2019 в 09:51
поделиться

Модуль Python re поддерживает нелегкое сопоставление. Просто добавьте ? в конец шаблона подстановки, например . *? . Вы можете узнать больше в этом HOWTO .

2
ответ дан 18 December 2019 в 09:51
поделиться

Гм ... есть способ сказать re, чтобы найти наименьшее совпадение, и это именно с помощью не жадных кванторов.

<bla><blabla>87765.*?</blabla><bla>

Я не могу представить, зачем вам это нужно делать, пока с использованием жадных кванторов.

0
ответ дан 18 December 2019 в 09:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: