Изменение регулярного выражения в Python
Хотя я не вижу в этом особого regular-expressions смысла, но вот что:
import re
import string
def traverse(tree):
retval = ''
for node in tree:
if node[0] == 'any':
retval += 'x'
elif node[0] == 'at':
pass
elif node[0] in ['min_repeat', 'max_repeat']:
retval += traverse(node[1][2]) * node[1][0]
elif node[0] == 'in':
if node[1][0][0] == 'negate':
letters = list(string.ascii_letters)
for part in node[1][1:]:
if part[0] == 'literal':
letters.remove(chr(part[1]))
else:
for letter in range(part[1][0], part[1][1]+1):
letters.remove(chr(letter))
retval += letters[0]
else:
if node[1][0][0] == 'range':
retval += chr(node[1][0][1][0])
else:
retval += chr(node[1][0][1])
elif node[0] == 'not_literal':
if node[1] == 120:
retval += 'y'
else:
retval += 'x'
elif node[0] == 'branch':
retval += traverse(node[1][1][0])
elif node[0] == 'subpattern':
retval += traverse(node[1][1])
elif node[0] == 'literal':
retval += chr(node[1])
return retval
print traverse(re.sre_parse.parse(regex).data)
Я взял regular-expressions все, от Regular Expression Syntax до групп - это кажется regexp разумным подмножеством - и regular-expressions проигнорировал некоторые pythonista детали, такие как окончания pythonic строк. Обработка ошибок и regex-php т. Д. Оставлена читателю regex-php в качестве упражнения.
Из python-interpreter 12 специальных символов в perl-regex регулярном выражении мы можем regular-expressions полностью игнорировать 6 regex (2 даже с атомом, к которому regexp они применяются), 4,5 приводят python к тривиальной замене, а 1,5 python заставляют нас задуматься.
Я python-interpreter думаю, что из этого не так regex-php уж и интересно.
python
regex
Изменение регулярного выражения в Python
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.