Java 从HTML页面中的列表中提取地址和名称
好的,我已经将一个页面HTML打印成字符串,我想从中获取一个特定的字符串。问题是每次我加载页面时都不一样。例如: 可能有1到10个列表。Java 从HTML页面中的列表中提取地址和名称,java,trim,Java,Trim,好的,我已经将一个页面HTML打印成字符串,我想从中获取一个特定的字符串。问题是每次我加载页面时都不一样。例如: 可能有1到10个列表。 我感兴趣的就是抓取地址和姓名 我确实试过: public static String removeNonDigits(final String str) { if (str == null || str.length() == 0) { return ""; } return str.replace
我感兴趣的就是抓取地址和姓名 我确实试过:
public static String removeNonDigits(final String str) {
if (str == null || str.length() == 0) {
return "";
}
return str.replaceAll("\\D+", "");
}
但是没有用。可能需要调整一点我不知道空白的确切位置:
Pattern pattern = Pattern.compile("\\n *(?:[1-9]|10)\\. +(.+?) *\\n *(.+?) *\\n");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println("name: " + matcher.group(1));
System.out.println("address: " + matcher.group(2));
System.out.println(matcher.group()); // the whole match
}
可能需要调整一点我不知道空白的确切位置:
Pattern pattern = Pattern.compile("\\n *(?:[1-9]|10)\\. +(.+?) *\\n *(.+?) *\\n");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println("name: " + matcher.group(1));
System.out.println("address: " + matcher.group(2));
System.out.println(matcher.group()); // the whole match
}
您是否尝试过从HTML中提取数据?现在我们已经做到了,不需要
str.length()==0
。通过replaceAll
方法的外观,您似乎想要删除所有数字。这就是你想做的吗?另外,+
表示“一个或多个”;如果您想要“0或更多”,请使用*
。不过,我不知道你想做什么;您没有给出一个很好的示例。要继续使用@user3707125,请后退一步,不要将HTML打印为字符串,而是在DOM中查找
或构成编号列表的任何内容。例如,欧洲电话号码通常是
分隔的,这可能会混淆正则表达式搜索。编辑:更改标题以表示基本要求您是否尝试从HTML中提取数据?现在不需要str.length()==0
。通过replaceAll
方法的外观,您似乎想要删除所有数字。这就是你想做的吗?另外,+
表示“一个或多个”;如果您想要“0或更多”,请使用*
。不过,我不知道你想做什么;您没有给出一个很好的示例。要继续使用@user3707125,请后退一步,不要将HTML打印为字符串,而是在DOM中查找
或构成编号列表的任何内容。例如,欧洲电话号码通常是
分隔的,这可能会混淆正则表达式搜索。编辑:更改标题以表示基本要求您是否尝试从HTML中提取数据?现在不需要str.length()==0
。通过replaceAll
方法的外观,您似乎想要删除所有数字。这就是你想做的吗?另外,+
表示“一个或多个”;如果您想要“0或更多”,请使用*
。不过,我不知道你想做什么;您没有给出一个很好的示例。要继续使用@user3707125,请后退一步,不要将HTML打印为字符串,而是在DOM中查找
或构成编号列表的任何内容。例如,欧洲电话号码通常是
分隔的,这可能会混淆正则表达式搜索。编辑:更改标题以表示基本要求