Я заинтересован в создании регулярных выражений с использованием комбинации машинного обучения и / или эволюционных алгоритмов. Мой подход требует, чтобы я случайно строил потенциальные строки регулярных выражений, которые оцениваются этими алгоритмами.
Кто-нибудь знает грамматику, не зависящую от контекста, которая говорит, как регулярные выражения могут быть структурированы? Набор правил, которые при соблюдении могут объединять перечисленные ниже элементы в допустимую структуру.
Например, используя следующие подкомпоненты:
basic_elements = {
"Character Escapes": ["\a", "\b", "\t", "\r", "\v", "\f", "\n", "\e", "\ ", "\c", "\u"],
"Character Classes": ["[group]", "[^ group]", "[first - last]", "\p{name}", "\w", "\s", "\S", "\d", "\D"],
"Anchors": ["^", "$", "\A", "\Z", "\z", "\G", "\b", "\B"],
"Grouping Constructs": ["(subexpression)", "(?< name > subexpression)",
"(?< name1 - name2 > subexpression)",
"(?: subexpression )", "(?imnsx-imnsx: subexpression )", "(?= subexpression )",
"(?! subexpression )", "(?<= subexpression )", "(?<! subexpression )",
"(?> subexpression )"],
"Quantifiers": ["*", "+", "?", "{n, }", "{n, m}", "*?", "+?", "??", "{ n }?", "{ n , }?", "{ n , m }?"],
"Backreference Constructs": ["\number", "\k< name >"],
"Alternation Constructs": ["|", "(?( expression ) yes | no )", "(?( name ) yes | no )"],
"Substitutions": ["$", "${name}", "$$", "$&", "$", "$`", "$'", "$+", "$_", "", "", "", ""],
"Regular Expression Options": ['i', 'm', 'n', 's', 'x'],
"Miscellaneous Constructs": ['(?imnsx-imnsx)', '(?# comment )', '#']
}
Заранее спасибо