Создайте регулярное выражение, которое будет принимать строку регулярного выражения в качестве входных данных, и проверьте, действительно ли это. По сути, ваше регулярное выражение должно быть в состоянии подтвердить себя. (Любое неправильное регулярное выражение не должно быть проверено, поэтому вы не можете использовать .*
.;))
Ваш вариант должен полностью поддерживаться хорошо известными реализациями (Perl, sed, grep, gawk и т. Д.), И он должен полностью поддерживать то, что поддерживают эти реализации. [Не беспокойтесь о том, что адвокат говорит; Я просто пытаюсь удалить любые возможные лазейки для умных дерьмов.]
Я бы поиграл в гольф , но я боюсь, что это даст преимущество тем, кто знает и использует не богатые на вкус ароматы. Или мои заботы необоснованны?
источник
Ответы:
Рубин
Я пытался максимально соответствовать фактическому синтаксису аромата регулярных выражений Ruby, но есть несколько изюминок: он принимает несколько недооцененных взглядов (например
(?<=(?<!))
), и распознает пустые диапазоны символов какD-A
. Последнее может быть исправлено для ASCII, но регулярное выражение достаточно длинное.Нечитаемая версия:
источник