簡體   English   中英

正則表達式:字符串必須包含單詞序列

[英]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.*

原因是您當前的正則表達式也將匹配LondonaParisaLondona Parisaaa 不確定你是否想要那個。

如果您在要查找的特定名稱周圍保留單詞邊界,則這些字符串將不會通過。

但是,我支持@Ali Ben Zarrouk 的觀點,即不需要為此使用正則表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM