Я не думаю, что вы сильно продвинетесь с простыми конструкциями регулярных выражений. Проблема в том, что, поскольку вы, очевидно, работаете в области естественного языка, существует множество возможностей, которые вы должны принять во внимание. Насколько общим должно быть решение?
Я знаю, что вы сказали, что что-то подобное возможно с Java API, но будет ли использование Prolog вариантом? SWI-Prolog имеет интерфейс Java (JPL), и описываемая вами проблема будет гораздо лучше решена в Prolog. Фактически, это та проблема, с которой Пролог справляется лучше всего и используется в научных кругах. SWI-Prolog даже включает в себя пакет для обработки естественного языка (http://www.swi -prolog.org / pldoc / package / nlp.html ). Это лучший способ справиться с проблемой, как я знаю.
Конечно, я не знаю, насколько важна эта функция для вашего продукта / проекта, и использование Prolog, вероятно, не вариант, поэтому другой вариант - написать парсер, который извлекает глагол / существительное и т. Д. И создает соответствующее "предложение модель "(группа объектов). Затем вы можете преобразовать эту модель предложений в другую модель предложений, основанную на некоторых правилах, разработанных расширяемым образом, чтобы при появлении новых случаев (и с таким широким доменом) вы могли просто добавить новое «правило» в твоя трансформация.
Это действительно нетривиальное решение, но я не представляю, как может выглядеть тривиальное решение.