[英]Regular expression: the string must contains sequence of words
我有這樣的代碼:
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
}
正則表達式在這里是可以避免的。
您可能還想使用單詞邊界。 像這個正則表達式:
.*\b(London)\b.*(Paris)\b.*
原因是您當前的正則表達式也將匹配LondonaParis
或aLondona Parisaaa
。 不確定你是否想要那個。
如果您在要查找的特定名稱周圍保留單詞邊界,則這些字符串將不會通過。
但是,我支持@Ali Ben Zarrouk 的觀點,即不需要為此使用正則表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.