![](/img/trans.png)
[英]How to extract the first letter and the following three digits from a string using regex java
[英]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解析器。 此页面上列出了一堆。 根据我使用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.