如何創建一個正則表達式來搜索給定模式的字符串?例如,我想搜索所有匹配模式'* index.tx?'的字符串。現在應該找到值爲index.txt,mainindex.txt和somethingindex.txp的字符串。正則表達式使用java.util.regex API-java
Pattern pattern = Pattern.compile("*.html");
Matcher m = pattern.matcher("input.html");
這段代碼顯然不起作用。
如何創建一個正則表達式來搜索給定模式的字符串?例如,我想搜索所有匹配模式'* index.tx?'的字符串。現在應該找到值爲index.txt,mainindex.txt和somethingindex.txp的字符串。正則表達式使用java.util.regex API-java
Pattern pattern = Pattern.compile("*.html");
Matcher m = pattern.matcher("input.html");
這段代碼顯然不起作用。
您需要登錄到learn regular expression syntax。它是而不是與使用通配符相同。試試這個:
Pattern pattern = Pattern.compile("^.*index\\.tx.$");
有很多有關正則表達式here的信息。在您學習正則表達式時,您可能會發現程序RegexBuddy有用。
*
匹配零次或多次出現的前一個標記,因此如果要匹配零個或多個任何字符,請改用.*
(.
匹配任何字符)。
修改的正則表達式應該是這個樣子:
Pattern pattern = Pattern.compile("^.*\\.html$");
^
字符串.*
匹配零個或多個任意字符\\.
點字符相匹配的開始(如果是不逃脫它將匹配任何字符)$
匹配字符串的末尾你張貼不起作用,因爲該代碼:
.
是一個特殊的正則表達式字符。這意味着任何字符的一個實例。*
表示前面的字符的任何出現次數。因此,.*
意味着任何數量的任何字符的發生。
所以你需要像
Pattern pattern = Pattern.compile(".*\\.html.*");
爲\\
的原因是因爲我們要插入點,雖然它是一種特殊的正則表達式標誌。 這意味着:匹配一個字符串,其中首先有任何數量的通配符,後跟一個點,然後是html
,隨後是任何內容。