繁体   English   中英

如何使用RegEx从以下内容提取数据?

[英]How to extract data from the following using RegEx?

我有以下模式的数据集

1<a href="/contact/">Joe</a><br />joe.doe@somemail.com</div>
2<a href="/contact/">Tom</a><br />tom.cat@aol.com</div>
3<a href="/contact/">Jerry</a><br />jerry.mouse@yahoo.co.in</div>

等等...

我需要从中单独提取名称和电子邮件ID。 我该怎么做?


更新:

根据您的回复,我已将数据格式更改为:

1(name)Joe(email)joe.doe@somemail.com(end)
2(name)Tom(email)tom.cat@aol.com(end)
3(name)Jerry(email)jerry.mouse@yahoo.co.in(end)

如何解析?

不要使用正则表达式来解析HTML

使用HTML解析器。 此页面上列出了一堆。 根据我使用Tidy的经验,我建议使用JTidy 从他们的页面:

JTidy是HTML Tidy的Java端口,HTML Tidy是HTML语法检查器和漂亮的打印机。 像其非Java表亲一样,JTidy可用作清理格式错误的HTML工具 此外,JTidy为正在处理的文档提供了DOM接口, 从而有效地使您能够将JTidy用作真实HTML的DOM解析器。

更新

根据对问题的编辑,使用split()\\([az]+\\)作为分隔符来拆分字符串。 这应该给您单独的组件:

String[] components = str.split("\\([a-z]+\\)");

或者,您可以使用更通用的表达式\\(.*?\\)

使用此正则表达式:

\(name\)(.*)\(email\)(.*)\(end\)

现在,第一个后向引用\\1包含名称,第二个后向引用\\2包含电子邮件地址。

继续调用相同的正则表达式以获取名字和电子邮件地址。

如果可以保证这将是所有条目的标准模式,则只需在每行上使用String.split(),并使用正则表达式(。*?)作为拆分模式即可。 这将与(后跟最少数量的其他字符,再跟另一个)相匹配。 所以代码看起来像这样:

//for each String line
String[] items = line.split("\\(.*?\\)");
name = items[0];
email = items[1];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM