在Java中使用正则表达式从字符串中提取令牌
我有一个HTML字符串(德语),如下所示:在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-
<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)”)
和
我正在尝试模式和匹配器类,但我肯定做了一些错误的事情
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)`