Regex для соответствия SHA1

  • Выберите «Пользователи»> «Поиск»> нажмите «Идентификатор»> перейдите на вкладку «Свойства»> «Добавить атрибут»> например: телефон> Сохранить enter image description here [/g0]
  • Выберите Клиенты> щелкните по идентификатору клиента> перейдите к вкладке Mappers> create mapper enter image description here [/g1] enter image description here [/g2] enter image description here [/g3]
  • Получить пользовательские атрибуты enter image description here [/g4] enter image description here [/g5]
34
задан git-noob 22 January 2009 в 07:58
поделиться

4 ответа

Можно полагать, что хеши SHA1 абсолютно случайны, таким образом, это уменьшает до вопроса вероятностей. Вероятность, что данная цифра не является числом, является 6/16, или 0.375. Вероятность, что три цифры SHA1 - все не числа, 0.375 ** 3, или 0.0527 (5%-й выход). В шести цифрах это уменьшает снова до 0,00278 (0,2%). В пяти цифрах вероятность всех букв опускается ниже 1% (Вы сказали, что хотели соответствовать 99% времени).

легко обработать регулярное выражение, которое всегда соответствует значениям SHA1:

\b[0-9a-f]{5,40}\b

Однако это может также распознать совершенно хорошие пять слов буквы, как "добавленный" или "увядшее". В моем /usr/share/dict/words файл, существуют несколько шесть слов буквы, которые соответствовали бы: "согласитесь", "украшенные бисером", "уложенные спать", "десятилетие", "сотрите", "вычеркните", и "фасад" наиболее вероятен. В семи буквах, существует только "deedeed", который вряд ли появится в прозе. Все это зависит от того, сколько ложных положительных сторон можно терпеть, и каковы вероятные слова, с которыми Вы встретитесь на самом деле.

65
ответ дан Greg Hewgill 10 October 2019 в 13:33
поделиться

Я собираюсь предположить, что Вы хотите соответствовать против шестнадцатеричного печатного представления SHA1, а не против эквивалентных 20 необработанных байтов. Кроме того, я собираюсь предположить, что рассматриваемый SHA1 использует только строчные буквы для представления шестнадцатеричных цифр. Необходимо будет скорректировать регулярное выражение, если требования отличаются.

grep -o -E -e "[0-9a-f]{40}"

будет соответствовать такому SHA1. Необходимо будет перевести вышеупомянутое регулярное выражение с диалекта egrep на любой инструмент, который Вы, оказывается, используете. Так как соответствие должно быть точно 40 символами долго, я не думаю, что Вы подвергаетесь риску случайно соответствующих слов. Я не знаю ни о каких словах с 40 символами, которые состоят только из букв A через f.

редактирование:

Еще лучше: используйте А Regex для соответствия SHA1, поскольку его решение включает проверку границы слова в обоих концах. Я пропустил это выше.

5
ответ дан Community 10 October 2019 в 13:33
поделиться

Что точно Вы пытаетесь сделать? Вы не должны должны быть анализировать что-либо выводы мерзавца с эвристикой - можно всегда запрашивать точно данные, в которых Вы нуждаетесь.

, Если Вы хотите соответствовать полному шестнадцатеричному представлению суммы SHA1, попробуйте:

/\b([a-f0-9]{40})\b/

таким образом, слово, состоящее из 40 символов, которые являются или цифрами или буквами A через f.

, Если Вы только имеете несколько символов и не знаете, где они, тогда Вы являетесь в значительной степени неудачливыми. "Действительно ли e78fd98" является сокращенным идентификатором фиксации? Возможно, но что относительно "1234567"? Это - идентификатор фиксации? Проблемный номер билета? Число, которое делает тестовый сбой?

Без контекста, Вы не можете действительно знать то, что означают данные.

Для ответа на прямой вопрос нет никакого свойства SHA1, который сделал бы первые три символа (в шестнадцатеричной форме) цифрами. Вы просто удачливы, или возможно неудачны, в зависимости от того, как Вы смотрите на него.

34
ответ дан jrockway 10 October 2019 в 13:33
поделиться

Если у вас есть доступ к репо, вы можете использовать git cat-file -e , чтобы убедиться, что он представляет объект в репо. Это тоже очень быстро. Если вы хотите ограничить это только коммитами и тегами, вы можете использовать git cat-file -t , чтобы узнать тип объекта.

Это можно было бы использовать, например, для поиска созданного человеком текста на предмет упоминания коммитов git и создания гиперссылок на веб-интерфейс git.

3
ответ дан 27 November 2019 в 06:31
поделиться
Другие вопросы по тегам:

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