UPDATE Вы можете использовать Apache Commons Codec (версия 1.7+), чтобы выполнить это задание для вас.
DigestUtils.sha1Hex(stringToConvertToSHexRepresentation)
Благодаря @ Jon Onstott для этого предложения.
Старый ответ Преобразуйте байт-массив в шестнадцатеричную строку. Real How How сообщает вам, как .
return byteArrayToHexString(md.digest(convertme))
и (скопирован из Real's How To)
public static String byteArrayToHexString(byte[] b) {
String result = "";
for (int i=0; i < b.length; i++) {
result +=
Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring( 1 );
}
return result;
}
Кстати, вы можете получить более компактное представление с использованием Base64. Apache Commons Codec API 1.4, имеет эту приятную утилиту, чтобы убрать всю боль. см. здесь
Для того, чтобы получить желаемый результат, вам необходимо внести небольшие изменения. В вашем
my_list = ['Ref.:', 'Reference', 'tramite', 'Expediente', 'Expediente No', 'Expedien N°', 'Exp.No', 'Expedien', 'Expedien N0']
Вы указали Expedien
перед Expedien N0
, из-за чего в text Expedien N0 18-00232995
текст Expedien
совпадает, а N0
совпадает во второй группе и не оставляет области для сопоставления [118 ] как это происходит позже. Следовательно, если вы просто измените порядок в вашем списке и поместите Expedien N0
перед Expedien
, то Expedien N0
соответствует первой группе, а 18-00232995
будет захвачено во второй группе и даст вам желаемые результаты. Проверьте ваш модифицированный код Python ниже,
import re
s="""text Expedien N0 18-00232995
$cat input_file
some text before Expedien: 1-21-212-16-26 some random text
Reference RE9833 of all sentences.
abc
123
456
something blah blah Ref.:
tramite 1234567
Ref.:
some junk Expedien N° 18-00777 # some new content
some text Expedien N°18-0022995 # some garbled content"""
my_list = ['Ref.:', 'Reference', 'tramite', 'Expediente', 'Expediente No', 'Expedien N°', 'Exp.No', 'Expedien N0', 'Expedien']
rx = r'(?<!\w)({})\W*([A-Z]*\d+(?:-+[A-Z]*\d+)*)'.format('|'.join(map(re.escape,my_list)))
print(rx)
print(re.findall(rx, s))
Prints,
[('Expedien N0', '18-00232995'), ('Expedien', '1-21-212-16-26'), ('Reference', 'RE9833'), ('tramite', '1234567'), ('Expedien N°', '18-00777'), ('Expedien N°', '18-0022995')]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ You have your intended tuple here in your findall results