2012-02-15 75 views
0

我試圖用正則表達式解析字符串像類似於這樣:的Java REG EXP匹配模式

<tag>Text that is written here. This could happen here: <Inline::~Inline> </tag> 

如何使用正則表達式從內聯替換「<」和「>」字符。問題在於Inline可能有不同的名稱,在主標籤內可以看到比較結果,如'< 20'。

謝謝。

+0

你能更具體地關於不同的Inline名稱嗎?它是否接近名單?它是否接近格式,例如'<東西::〜事>'? – AlexR 2012-02-15 13:28:16

+0

我不確定可能的值,但格式相同 – Radu 2012-02-15 13:29:42

+0

在這種情況下,請將user1168884的答案標記爲正確,因爲它*爲*。 – AlexR 2012-02-15 14:00:58

回答

3

假設內嵌標籤:

  • 中有相同的字符串兩次,第一次由波浪
  • 總是有兩個冒號之前

那麼這應該工作:

String s= "<tag>some text here > 20 <test::~test> and then </tag>"; 
    s = s.replaceAll("<((\\w+)::~\\2)>","$1"); 
    System.out.println(s); 

無論調用什麼Inline/Test。

EDITED - 忘了把兩個冒號放在:-)

+0

+1 \\ 2。我不知道這個語法。 – AlexR 2012-02-15 14:02:20

+0

正則表達式分組(即\\ 2語法)幾乎是自切片面包以來最好的東西! ;) – Andre 2012-02-15 14:33:48

+0

謝謝,工作完美 – Radu 2012-02-15 14:38:33

0

這種模式應該匹配任何標籤:

<(.|\n)*?> 

所以對於內嵌匹配:因爲我覺得這是一個答案值得

<Inline(.|\n)*?>