在Java中组合正则表达式
我对一个用Java从html表中提取信息的程序有一些问题。 为了从每一列中提取信息,我使用以下正则表达式:在Java中组合正则表达式,java,regex,Java,Regex,我对一个用Java从html表中提取信息的程序有一些问题。 为了从每一列中提取信息,我使用以下正则表达式: <td>([^<]*)</td> ([^(.*)) 这也非常有效。 但有时我需要链接所在列的信息。因此,我想将这些正则表达式与: <td>([^<]*)</td>|<a[^>]*>(.*?)</a> ([^(.*)) 我以为它会这样工作: 它可以得到介于和之间的所有东西 如果这个东西是一个链
<td>([^<]*)</td>
([^(.*))
这也非常有效。
但有时我需要链接所在列的信息。因此,我想将这些正则表达式与:
<td>([^<]*)</td>|<a[^>]*>(.*?)</a>
([^(.*))
我以为它会这样工作:
- 它可以得到介于
和
之间的所有东西 - 如果这个东西是一个链接,那么它也只能得到链接名
Pattern pattern = Pattern.compile("<td>([^<]*)</td>|<a[^>]*>(.*?)</a>");
String line = "Here are the lines saved from the HTML downloader";
Matcher matcher = pattern.matcher(line);
for (int startPoint = 0; matcher.find(startPoint); startPoint = matcher.end())
{
System.out.prinln(matcher.group(1));
}
Pattern=Pattern.compile(([^(.*));
String line=“以下是从HTML下载程序保存的行”;
匹配器匹配器=模式匹配器(线);
for(int startPoint=0;matcher.find(startPoint);startPoint=matcher.end())
{
系统输出原则(匹配组(1));
}
这只是一个片段,但它通常是这样工作的。(通常字符串保存在数组中)。“我对用Java从html表中提取信息的程序有一些问题。”不要用正则表达式解析html这是什么意思?请给我们你正在使用的代码,并给我们一个简短的可重复的例子,清楚地说明你的问题。我知道很多人不喜欢用正则表达式解析html。但它一直对我有效。我知道一定有可能将其结合起来。
matcher.group(1)
如果找到链接,则返回null
。它们已经组合在一起。要合并到单个捕获组中,Java必须执行分支重置,这是不执行的。在每次匹配时,两个组中的一个组将为null
,另一个组不会。您所要做的就是检查哪一个。不要将null
与空字符串混淆.我现在试着和JSoup一起解析所有这些东西,效果好多了-但是谢谢你们的帮助!
Pattern pattern = Pattern.compile("<td>([^<]*)</td>|<a[^>]*>(.*?)</a>");
String line = "Here are the lines saved from the HTML downloader";
Matcher matcher = pattern.matcher(line);
for (int startPoint = 0; matcher.find(startPoint); startPoint = matcher.end())
{
System.out.prinln(matcher.group(1));
}