正则表达式:字符串必须包含单词序列

Nev*_*eps 0 java

我有这样的代码:

        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);
Run Code Online (Sandbox Code Playgroud)

我需要所有布尔值都是真的。现在,这个条件已经满足,但是正则表达式在我看来并不是很有效。我怎样才能改变这个?

Ali*_*ouk 5

您可以使用比正则表达式更快的方法:

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

        return indexOfLondon != -1 && indexOfParis != -1 && indexOfLondon < indexOfParis 
    }
Run Code Online (Sandbox Code Playgroud)

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

  • 但那是作弊!正则表达式很有趣!只是在开玩笑 :) (2认同)
  • 我听到过这样的话:“如果你遇到问题并且认为可以用正则表达式解决它,那么你就会遇到两个问题” (2认同)