我有这样的代码:
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
}
正则表达式在这里是可以避免的。