2010-08-15 66 views
0

如何創建一個正則表達式來搜索給定模式的字符串?例如,我想搜索所有匹配模式'* index.tx?'的字符串。現在應該找到值爲index.txt,mainindex.txt和somethingindex.txp的字符串。正則表達式使用java.util.regex API-java

Pattern pattern = Pattern.compile("*.html"); 
Matcher m = pattern.matcher("input.html"); 

這段代碼顯然不起作用。

回答

3

您需要登錄到learn regular expression syntax。它是而不是與使用通配符相同。試試這個:

Pattern pattern = Pattern.compile("^.*index\\.tx.$"); 

有很多有關正則表達式here的信息。在您學習正則表達式時,您可能會發現程序RegexBuddy有用。

1

*匹配零次或多次出現的前一個標記,因此如果要匹配零個或多個任何字符,請改用.*.匹配任何字符)。

修改的正則表達式應該是這個樣子:

Pattern pattern = Pattern.compile("^.*\\.html$"); 
  • ^字符串
  • .*匹配零個或多個任意字符
  • \\.點字符相匹配的開始(如果是不逃脫它將匹配任何字符)
  • $匹配字符串的末尾
1

你張貼不起作用,因爲該代碼:

  1. .是一個特殊的正則表達式字符。這意味着任何字符的一個實例。
  2. *表示前面的字符的任何出現次數。

因此,.*意味着任何數量的任何字符的發生。

所以你需要像

Pattern pattern = Pattern.compile(".*\\.html.*"); 

\\的原因是因爲我們要插入點,雖然它是一種特殊的正則表達式標誌。 這意味着:匹配一個字符串,其中首先有任何數量的通配符,後跟一個點,然後是html,隨後是任何內容。