2010-04-02 46 views
2

我正在使用JEditorPane來呈現基本的HTML。但它會錯誤地呈現自閉標籤,特別是br標籤,例如。 < br/>不好,但是<br>很好。我想使用String.replaceAll(「<br>」)來修復HTML,其中正則表達式是一個正則表達式,匹配任何具有不區分大小寫的自閉合br標籤,以及「r 「與 」/「(例如,< BR/>,< BR/>,< BR/>,<  溴     />,等等)。正則表達式,JEditorPane,自閉標記

感謝任何能解決這個問題的正則表達式專家!

+0

''
是無效的HTML,反正。而'
'將是無效的XHTML。以正確的方式創建底層HTML不是更容易,而不是用正則表達式修復它後面的黑客? – Joey 2010-04-02 15:18:38

+0

我的HTML源自90年代末期。事實上,在使用HtmlCleaner清理和提取片段以存儲數據庫之前,br標記的MOST未正確關閉。但是,那麼我需要使用JEditorPane來渲染它,所以它需要轉換回HTML 4之前的標準!當然,我們將來可能不得不使用飛碟或其他渲染解決方案,因此最好將它保持在數據庫中的標準水平,併爲JEditorPane動態修復。 – 2010-04-03 01:54:11

回答

4

您可以使用正則表達式:

<[bB][rR]\s*/> 
  • <:要匹配文字<
  • [bB]:一個char是 要麼bB
  • [rR]匹配類:一個char類匹配 要麼r要麼R
  • \s:任意一個空格
  • \s*:零個或多個空格。

如果你想只允許一個空白的空間,你可以使用:

<[bB][rR] */> 
+0

真棒,感謝您的快速回復和解釋!我會現在測試它,並標記爲已回答,如果它工作! – 2010-04-02 15:26:29

+0

工程就像一個魅力! – 2010-04-02 15:34:50