Есть ли хорошие (или, по крайней мере, интересные, но ошибочные) аналоги для регулярных выражений в двух измерениях?Есть ли хорошие/интересные аналоги для регулярных выражений в 2d?
В одном измерении я могу написать что-то вроде /aaac?(bc)*b?aaa/
быстро вытащить область из чередующихся b
с и c
с с границей, по крайней мере, трех a
с. Возможно, так же важно, что я могу вернуться через месяц и сразу увидеть, что он ищет.
Я нахожу, что нахожу, что я написал собственный код для аналогичных проблем в 2d (несколько более сложный/ограниченный), и было бы неплохо иметь более сжатые и стандартизованные обозначения, даже если я должен сам написать движок за ним ,
Второй пример можно назвать «найти +». Цель состоит в том, чтобы найти столбец из 3 или более a
s, a b
, заключенный в квадратные скобки на 3 или более a
s с тремя или более a
s ниже. Она должна соответствовать:
..7...hkj.k f
7...a h o j
----a--------
j .a,g- 8 9
.aaabaaaaa7 j
k .a,,g- h j
hh a----? j
a hjg
и может быть записана в виде [Ь (а {3}) V (A {3})> (а {3}) < (а {3})] или .. .
Предложения?
Можете ли вы привести пример? – Gumbo
Регулярные выражения в конечном итоге становятся государственными машинами, делая такую машину состояний на 2-м пространстве звучит исключительно сложно (и общее решение без значительных умений будет очень медленным. Простое обнаружение связанных областей довольно сложно, на что это будет опираться ... – ShuggyCoUk
Я хотел бы предложить создать библиотеку для перечисления областей (где существует много реализаций, например, манифольдов, внутренних шаблонов), а затем сделать регионы с несколькими полезными четко определенными операциями над ними, такими как пересечение границ и в каждой точке проверки значений вокруг него и т. Д. – ShuggyCoUk