2016-09-21 26 views
0

我需要此正則表達式幫助將String="55555 <italic>bold-italic</italic>"分隔爲m.group[0]="55555" m.group[1]="italic" and m.group[2]="bold-italic。目前這個表達式<(.*)>(.*)</\\1>分開italicbold-italic,但我在添加數字部分時遇到問題。正則表達式幫助java

謝謝

回答

0

你可以使用:(\d+)\s*(<\w+>)(.*)<\/\w+>

演示here

Java代碼:

public static void main (String[] args) throws java.lang.Exception 
{ 
    String pattern = "(\\d+)\\s*(<\\w+>)(.*)<\\/\\w+>"; 
    String input = "55555 <italic>bold-italic</italic>"; 

    Pattern p = Pattern.compile(pattern); 
    Matcher m = p.matcher(input); 
    if (m.find()) 
    { 
     System.out.println("First group : " + m.group(1)); 
     System.out.println("Second group : " + m.group(2)); 
     System.out.println("Third group : " + m.group(3)); 
    } 
} 

輸出:

First group : 55555 
Second group : <italic> 
Third group : bold-italic 
+0

如果你想用另一個詞而不是「斜體」怎麼辦? – Evgeni

+0

我更新了正則表達式,它應該對待其他單詞。 – SomeDude

0

當需要處理正則表達式時,我喜歡使用https://regex101.com/來嘗試不同的可能性。 它在技術上不是爲Java製作的,但仍然非常有效(有時您必須插入/刪除轉義字符才能使其工作)。

對於您的示例,m.group [0] =「55555」上的正則表達式應該類似於([1-9] *),具體取決於您想要的準確值以及該組是否應該有長度限制。