Конвертер для SQL Регулярное выражение в регулярное выражение Java - PullRequest
0 голосов
/ 12 марта 2019

Я создаю API, который требует преобразования регулярного выражения SQL в регулярное выражение Java.Это регулярное выражение специально для ключевого слова REGEXP в MySQL.

Мой вопрос: есть ли какая-либо библиотека или репозиторий git-hub, доступные для достижения этой цели?

SQL-запрос:

SELECT company 
FROM business 
WHERE title REGEXP '^[ABCD]';

Регулярное выражение ввода в MySQL: ^[ABCD] Регулярное выражение вывода на Java: [A-D]*

Я много искал в Интернете, но могне найти никого, чтобы сделать это.Любые предложения, как я могу подойти к этому.

1 Ответ

1 голос
/ 12 марта 2019

Почему, по вашему мнению, ^[ABCD] следует перевести на [A-D]*?В соответствии с https://dev.mysql.com/doc/refman/8.0/en/regexp.html#regexp-syntax, ^ означает то же самое, что и в Java, [ABCD] является классом символов, который может быть написан таким же образом в Java.[A-D] также допустимо в регулярных выражениях Java и MySQL и имеет одинаковое значение.Таким образом, перевод ^[ABCD] будет ... ^[ABCD].

Никто, вероятно, не напишет библиотеку для перевода между этими двумя диалектами, в частности;для более общих инструментов, см. Инструмент для преобразования регулярных выражений между различными языковыми синтаксисами? или Бесплатная альтернатива RegexBuddy .

Или вы можете написать это самостоятельно: единственный синтаксис вта страница, которая не поддерживается в Java, кажется [= =], что требует от вас знать, какое сопоставление использовать.Таким образом, вы могли бы написать метод, который находит [= =] части (используя регулярные выражения) и заменяет их классом полной эквивалентности в соответствии с вашим желаемым сопоставлением.Это не означает, что каждый шаблон даст одинаковый результат для каждой строки;см. «Вопросы совместимости регулярных выражений» в https://dev.mysql.com/doc/refman/8.0/en/regexp.html и «Различия с регулярными выражениями Java» в http://userguide.icu -project.org / strings / regexp , чтобы узнать о типах проблем, которые вам понадобятсяиметь дело.

...