Там хорошо работают / интересные аналоги к регулярным выражениям в 2-м?

Простейшим для вас может быть введение компонента «poll» библиотеки ajax4jsf: https://ajax4jsf.dev.java.net/nonav/documentation/ajax-documentation/entire.html#d0e1955

Это не потребует реконфигурации приложения и больших изменений на странице JSF (добавление компонента a4j: poll добавлено)

Он работал очень хорошо в нескольких моих проектах.

26
задан MicSim 18 July 2009 в 13:45
поделиться

4 ответа

Не будучи regex экспертом, но нахождением интересной проблемы, я озирался и нашел это интересное запись в блоге . Особенно синтаксис, используемый там для определения 2D regex, выглядит привлекательным. Бумага, связанная там, могла бы сказать Вам больше, чем я.

Обновление из комментария: Вот ссылка на страницу основного автора, где можно скачать связанную статью "Двумерные языки" : http://www.mat.uniroma2.it/~giammarr/Research/pubbl.html

10
ответ дан MicSim 28 November 2019 в 17:22
поделиться

Хорошая проблема.

Во-первых, спросите себя, можете ли вы ограничить шаблон шаблоном «+», или вам также нужно проверить / сопоставить прямоугольники. Например, прямоугольник из [bc] с границей a из a будет соответствовать центральному прямоугольнику ниже, но также будет соответствовать форме «+» [c([bc]*a})v([bc]*a)>([bc]*a)<([bc]*a)] (в вашем синтаксисе)

xxxaaaaaxxx
yzyabcba12d
defabcbass3
oreabcba3s3
s33aaaaas33
k388x.egiee

Если вы можете ограничить его знаком «+», тогда ваша задача будет намного проще. Как сказал ShuggyCoUk, синтаксический анализ RE обычно эквивалентен DFSM - но для одного последовательного ввода, который значительно упрощает работу.

В вашем движке «RE +» вам придется отлаживать не только движок, но и каждое место, где вводятся выражения. Я хотел бы, чтобы компилятор ловил любые ошибки, которые он мог. Учитывая это, вы также можете использовать что-то, что было явно четырьмя RE, например:

REPlus engine = new REPlus('b').North("a{3}")
   .East("a{3}").South("a{3}").West("a{3}");

Однако, в зависимости от вашей реализации это может быть громоздким.

А что касается движка обхода - будут ли шаблоны Север / Запад соответствовать RtL или LtR? Может иметь значение, совпадают ли шаблоны по-другому с или без жадных суб-соответствий.

Кстати, я думаю, что '^' в вашем примере должен быть одним символом слева, вне скобок.

4
ответ дан NVRAM 28 November 2019 в 17:22
поделиться

Регулярные выражения разработаны к образцовым шаблонам в одном размере. Насколько я понимаю Вы хотите соответствовать шаблонам в двумерной матрице символов.

можно ли использовать регулярные выражения? Это зависит от того, является ли свойство, которое Вы ищете, разложимым в компоненты, которые могут быть подобраны в одном размере или нет. Если так, можно выполнить регулярные выражения на столбцах и строках, и искать пересечения в наборах решения от тех. В зависимости от конкретной проблемы Вы имеете, это может или решить проблему, или она может найти области в Вашем 2-м массиве, которые, вероятно, будут решениями.

, Является ли Ваша проблема разложимой или нет, я думаю, пишущий, что некоторый пользовательский код будет неизбежен. Но по крайней мере это походит на интересную проблему, таким образом, работа должна быть приятной.

3
ответ дан Rob Lachlan 28 November 2019 в 17:22
поделиться

Вы по сути говорите о языке пространственных запросов . Есть много, если вы посмотрите на пространственный запрос, географический запрос и графический запрос. Пространственная часть обычно сводится к точкам, линиям и объектам в регионе, которые имеют другие заданные атрибуты. Регионы могут быть заданы как полигоны, расстояние от точки (например, окружности), расстояние от линейного объекта, такого как дорога, все точки на одной стороне линейного объекта и т. Д. Затем можно перейти к более сложным запросам, таким как набор всех ближайших соседей, кратчайшего пути, коммивояжера и тесселяций, таких как диаграммы TIN Делоне и диаграммы Вороного.

3
ответ дан SmacL 28 November 2019 в 17:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: