使用Java中的REGEX从字符串中提取标记

时间:2014-08-20 22:44:42

标签: java regex

我有一个HTML字符串(德语),如下所示:

<li>Peter Goldberg Dr. , Brünner Straße 19, A-1210, Tel +43-1-1234567 (N)</li>

它由3部分组成:

  • 该人的姓名(“Peter Goldberg Dr。”)
  • 该人的地址(“BrünnerStraße19,A-1210”)
  • 和该人的电话号码或仅仅是其余字符串(“电话+ 43-1-1234567(N)”)

我需要将整个字符串拆分为这3个组件而不使用HTML列表标记<li></li>

我正在尝试使用Pattern和Matcher类,但我确实做错了。

    Pattern myPattern = Pattern.compile("<li>.+,.+Tel.+</li>");
    Matcher mat = myPattern.matcher(eingabe[0]);

    while (mat.find()) {
        System.out.println(mat.group(0));
    }

有人可以帮忙吗?

非常感谢!!

2 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式获取li标记内的所有元素并将其拆分:

String s = "<li>Peter Goldberg Dr. , Brünner Straße 19, A-1210, Tel +43-1-1234567 (N)</li>";
   Pattern myPattern = Pattern.compile("<li>(.*)</li>");
   Matcher mat = myPattern.matcher(s);
   String [] array;
   while (mat.find()) {
       array = mat.group(1).split(",");
       System.out.println("Name: " + array[0]);
       System.out.println("Address: " + array[1] + "," + array[2]);
       System.out.println("Telephone: " + array[3]);

   }

<强>结果:

Name: Peter Goldberg Dr. 
Address:  Brünner Straße 19, A-1210
Telephone: Tel +43-1-1234567 (N)

答案 1 :(得分:1)

您可以使用此正则表达式:

<li>(.*?), (.*), (.*)<\/li>

<强> Working demo

enter image description here

MATCH 1
1.  [4-23]  `Peter Goldberg Dr. `
2.  [25-50] `Brünner Straße 19, A-1210`
3.  [52-78] `Tel +43-1-1234567 (N)`