0

我正在阅读以下任一模式的字符串:

^<.*>.*</td>$
^<.*><.*>.*</a></td>$

示例:

<td nowrap valign="top" class="style1">Manhattan</td>
<td nowrap valign="top" class="style1"><a>New York</a></td>

我想阅读ManhattanNew York

如何在同一个程序中编写 2 个 Pattern.complie() 方法?Matches() 总是为我的输入行返回 true,但在那之后我该如何进行子字符串操作来提取ManhattanNew York?任何建议都会有很大帮助。谢谢。

4

5 回答 5

1

使用正则表达式,如:

final Pattern pattern = Pattern.compile("<td>(.+?)</td>");
于 2013-06-21T10:44:36.520 回答
1

您应该使用 GROUPS。

更改 ^<.*>.*</td>$^<.*>(?<name>.*)</td>$

在matches() 返回true 之后,您可以提取姓名matcher.group("name")(返回带有您姓名的字符串)。

编辑 感谢伊恩。

在 java7 之前你必须做matcher.group(1). Group0会给你匹配的整个字符串。

于 2013-06-21T10:49:09.337 回答
0
String stem[] = "<td nowrap valign='top' class='style1'>Manhattan</td>".split(">");

String stem1[] = stemp[1].split("<");

System.out.println(stemp[0]);

这是你想要的吗?

于 2013-06-21T10:44:36.870 回答
0

尝试这个..

public class tag {
public static void main(String[] args) {
    String inputString="<td nowrap valign=top class=style1>Manhattan</td>"
                      +"<td nowrap valign=top class=style1><a>New York</a></td>";

       String noHTMLString = inputString.replaceAll("\\<.*?>","");
       System.out.println(""+noHTMLString);
}

}

于 2013-06-21T10:46:20.703 回答
0

当您使用框架时,它会容易得多......我脑海中的 Selenium Webdriver 示例:

List<WebElement> elems = wd.getElements(By.class("class1"));
  • Selenium 网络驱动程序
  • html单元
于 2013-06-21T13:16:34.970 回答