Требуется регулярное выражение для анализа запроса предложения where в java - PullRequest
0 голосов
/ 08 мая 2020

Мне нужен ваш опыт работы с регулярным выражением для решения одной из моих проблем.

Предложение where для запроса будет выводиться из полезной нагрузки запроса службы REST. Я хочу сначала проверить и проанализировать с помощью Java Parser.

Я пробовал до некоторой степени. Я новичок в REGEX. Я написал код, чтобы проверить это. Но частично работает. Может кто-нибудь предложить правильный REGEX и, если возможно, объяснить, как он работает. Это очень полезно.

Я вставляю свой фрагмент кода.

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class DummyTester {
    public DummyTester() {
        super();
    }

    public static void main(String[] args) {

        String text = "productName co Jam and (expiryDate gt 2020-02-06T00:00:00.000Z or Quantity gt 500)";

        checkRegex(text);
        checkRegex("userName eq bjensen");
        checkRegex("familyName co O'Malley");
        checkRegex("userName eq bjensen and familyName co O'Malley");
        checkRegex("userName eq bjensen or familyName co O'Malley");
        checkRegex("(userName eq bjensen and familyName co O'Malley) OR (userName eq bjensen or familyName co O'Malley");
        //So many such combinations may exist.

        //System.out.println(text);
    }

    static String checkRegex(String tester) {

        String regex ="(\\w[\\w\\d]* \\s*(?:co|eq|gt)\\s* \\w[\\w\\d\\-\\:]*)* ?(?:and|or|AND|OR)?";

        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(tester);
        boolean b = m.matches(); 
        System.out.println("matcher is   : "+ b);
        return null;
    }

}
...