2016-09-21 8 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を分けていますが、数字の部分を追加するのに問題があります。Regex expression help 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] *)長さ制限。