Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用正则表达式从字符串中提取令牌_Java_Regex - Fatal编程技术网

在Java中使用正则表达式从字符串中提取令牌

在Java中使用正则表达式从字符串中提取令牌,java,regex,Java,Regex,我有一个HTML字符串(德语),如下所示: <li>Peter Goldberg Dr. , Brünner Straße 19, A-1210, Tel +43-1-1234567 (N)</li> 彼得·戈德伯格博士,布鲁纳大街19号,A-1210,电话+43-1-1234567(北) 它由3部分组成: 人员姓名(“彼得·戈德伯格博士”) 此人的地址(“Brünner Straße 19,A-1210”) 以及此人的电话号码或字符串的其余部分(“电话+43-1-

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

<li>Peter Goldberg Dr. , Brünner Straße 19, A-1210, Tel +43-1-1234567 (N)</li>
彼得·戈德伯格博士,布鲁纳大街19号,A-1210,电话+43-1-1234567(北) 它由3部分组成:

  • 人员姓名(“彼得·戈德伯格博士”)
  • 此人的地址(“Brünner Straße 19,A-1210”)
  • 以及此人的电话号码或字符串的其余部分(“电话+43-1-1234567(N)”)
我需要将整个字符串拆分为这3个组件,而不使用HTML列表标记
  • 我正在尝试模式和匹配器类,但我肯定做了一些错误的事情

        Pattern myPattern = Pattern.compile("<li>.+,.+Tel.+</li>");
        Matcher mat = myPattern.matcher(eingabe[0]);
    
        while (mat.find()) {
            System.out.println(mat.group(0));
        }
    
    Pattern-myPattern=Pattern.compile(“
  • +,.+Tel.+
  • ”); Matcher mat=myPattern.Matcher(eingabe[0]); while(mat.find()){ 系统输出打印LN(材料组(0)); }
    有人能帮忙吗


    非常感谢

    您可以使用此正则表达式获取
    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]);
    
       }
    

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

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

    谢谢罗德·阿尔冈琴和费德!还有一点我必须提到:在第二个组件(地址)中,可以有任意数量的逗号(,)。我不确定这是否会改变你的答案@user3704589我知道这就是为什么我使用贪婪运算符。贪婪的接线员会忽略所有的逗号,除了最新的一个是地址和电话之间的分隔符。太棒了!非常感谢你!!答案将告诉您如何从特定字符串中获取这些特定字段,但那又怎样呢?大多数正则表达式用于其他输入字符串,仅举一个例子就留下了许多问题没有答案。地址总是中间有一个逗号吗?或者它可以有0个、2个或更多?电话号码是否总是以
    Tel
    开头?这个人的名字或电话号码可以用逗号吗?根据这些问题的答案,张贴的答案可能不正确。
    <li>(.*?), (.*), (.*)<\/li>
    
    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)`