我有这样的代码:

        String regexp = "[\\w\\W]*(London)[\\w\\W]*(Paris)[\\w\\W]*";

        String test1 = "London Paris";
        boolean t1 =  Pattern.matches(regexp, test1);
        System.out.println(t1);

        String test2 = "London to Paris";
        boolean t2 =  Pattern.matches(regexp, test2);
        System.out.println(t2);

        String test3 = "from London to Paris";
        boolean t3 =  Pattern.matches(regexp, test3);
        System.out.println(t3);

        String test4 = "from (London) -> (Paris)";
        boolean t4 =  Pattern.matches(regexp, test4);
        System.out.println(t4);


我需要所有布尔值都是真实的。现在,满足了此条件,但是对我而言,正则表达式似乎不太有效。我该如何更改?

最佳答案

您可以比正则表达式快一些:

public static boolean isValid(String str) {
        int indexOfLondon = str.indexOf("London");
        int indexOfParis = str.indexOf("Paris");

        return indexOfLondon != -1 && indexOfParis != -1 && indexOfLondon < indexOfParis
    }


正则表达式在这里是可以避免的。

10-08 13:26