Trying to select preceding zeros of a number present in a RQL query using regex

48 Views Asked by At

I'm trying to remove the preceding zeros of numbers present in below query

String query = "or(contains(number,'04506'),contains(name,'04506'),contains(vendorInfo.name,'04506'),contains(vendorInfo.number,'04506'),contains(costCategories.name,'04506')";

I'm using below regex

query = query.replaceAll("\\b0+",""); 

Problem is, it also removes zero, if we provide a query with a timestamp to it, e.g.

query = "ge(dateCreated,'2013-01-18T19:30:00.000Z')"; 
1

There are 1 best solutions below

0
Arvind Kumar Avinash On BEST ANSWER

You can use negative lookarounds to not remove the zero followed by or preceded by any of -, :, . or T.

class Main {

    public static void main(String args[]) {
        String query = "contains(costCategories.name,'05.04506')ge(dateCreated,'2013-01-18T09:30:00.000Z')";
        query = query.replaceAll("(?<![-:\\.T])\\b0+(?![-:\\.T])", "");
        System.out.println(query);
    }
}

Output:

contains(costCategories.name,'5.04506')ge(dateCreated,'2013-01-18T09:30:00.000Z')