2012-02-07 43 views

回答

1

我會使用類似的東西:

import java.util.StringTokenizer; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

class SimpleRegexExample { 
    //TODO: Load your html content from file 
    protected String html = "<html>\n" 
      + "<head>\n" 
      + " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n" 
      + " <meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\n" 
      + " <title></title>\n" 
      + " <meta name=\"Generator\" content=\"Cocoa HTML Writer\">\n" 
      + " <meta name=\"CocoaVersion\" content=\"1038.36\">\n" 
      + " <style type=\"text/css\">\n" 
      + "  p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 26.0px Helvetica}\n" 
      + "  p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica}\n" 
      + "  p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}\n" 
      + "  p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 19.0px Helvetica; min-height: 23.0px}\n" 
      + "  p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}\n" 
      + " </style>\n" 
      + "</head>\n" 
      + "\n" 
      + " <body>\n" 
      + "  <p class=\"p1\"><b>{{BookName}}</b></p>\n" 
      + "  <p class=\"p2\">by {{AuthorName}}</p>\n" 
      + "  <p class=\"p3\"><br></p>\n" 
      + "  <p class=\"p3\"><br></p>\n" 
      + "  <p class=\"p4\"><span class=\"Apple-converted-space\"> </span></p>\n" 
      + "  <p class=\"p5\">{{AuthorBio}}</p>\n" 
      + "  <p class=\"p3\"><br></p>\n" 
      + "  <p class=\"p3\"><br></p>\n" 
      + "  <p class=\"p5\">{{Credits}}</p>\n" 
      + "  <p class=\"p3\"><br></p>\n" 
      + "  <p class=\"p3\"><br></p>\n" 
      + " </body>\n" 
      + "</html>\n"; 

    public SimpleRegexExample() { 
     // Split the html text into single lines 
     StringTokenizer st = new StringTokenizer(html, "\n"); 

     // Initialize the regex 
     String regex = "\\{\\{(.*?)\\}\\}"; 
     Pattern p = Pattern.compile(regex); 

     // Parses each line 
     while (st.hasMoreTokens()) { 
      String token = st.nextToken(); 
      Matcher m = p.matcher(token); 

      // Searches for matches 
      while (m.find()) { 
       if (m.group(1) != null) { 
        // TODO: Set here your replacement 
        html = html.replace("{{" + m.group(1) + "}}", m.group(1)); 
       } 
      } 
     } 

     // Prints the result 
     System.out.println(html); 
    } 

    public static void main(String[] args) { 
     new SimpleRegexExample(); 
    } 
} 
+0

您表達我應該替換的文件路徑的HTML? – cavallo 2012-02-07 13:28:01

+0

我不明白你的意思。 – CSchulz 2012-02-07 13:37:22

1

擺脫XML/HTML內容的最好的方式是XPath的可以直接有一個查詢來獲取元素DOM包含您所需要的數據。

如果HTML是你的內容,那麼我會建議你有一個屬性,它指定它是書名。

您可以使用XPath查詢這樣

// P [@類= 'P1']/B

條件的XPath是HTML文件應該有一個適當的結束標記。

但是,如果你想使用正則表達式,然後使用這個

.+<p class=\"p1"> 

這個表達式將匹配的P1級和u需要獲得這個表達式最終指數獲得的B標籤的位置後, p標籤。

U可以嘗試

http://www.gskinner.com/RegExr/