У меня возникли проблемы с преобразованием выражения RegEx в python. Я знаю, что '(\\d+)'
является выражением для одного целого числа, но я не могу понять, как получить целое число [2-9].Проблемы с Python Regex
регулярное выражение выражение выглядит следующим образом:
[2-9][p-z][a-h][2-9][a-z]*[p-z][2-9][p-z][2-9][p-z]
Это мое текущее выражение, но он производит много ложных срабатываний, поскольку это не достаточно конкретны:
re1='(\\d+)' # Integer Number 1 re2='([a-z])' # Any Single Word Character (Not Whitespace) 1 re3='([a-z])' # Any Single Word Character (Not Whitespace) 2 re4='(\\d+)' # Integer Number 2 re5='((?:[a-z][a-z]+))' # Word 1 re6='(\\d+)' # Integer Number 3 re7='([a-z])' # Any Single Word Character (Not Whitespace) 3 re8='(.)' # Any Single Character 1 re9='([a-z])' # Any Single Word Character (Not Whitespace) 4
## Regex search for passcodes ## Thanks to Pierluigi Failla
rg = re.compile(re1+re2+re3+re4+re5+re6+re7+re8+re9,re.IGNORECASE|re.DOTALL)
m = rg.search(txt)
if m:
int1=m.group(1)
w1=m.group(2)
w2=m.group(3)
int2=m.group(4)
word1=m.group(5)
int3=m.group(6)
w3=m.group(7)
c1=m.group(8)
w4=m.group(9)
txt2='"'+int1+w1+w2+int2+word1+int3+w3+c1+w4+'"'
return [txt2]
Но '[2-9] 'является правильной для сравнения целого числа, которое является 2- 9. Итак, что вы хотите совместить в первую очередь? Какие ложные срабатывания вы получаете? Каковы примеры строк, которые вы сопоставляете? – migg
Этот вопрос очень неясен. Первый expr и код ниже не совпадают. – dansalmo
Вы хотите использовать необработанные строки 'r''', чтобы избежать всех удвоенных' \\ ', и существует режим' re.VERBOSE', чтобы упростить чтение прочитанных выражений, чем объединение 9 отдельных строк. –