我正在读取以下任一模式的字符串:
^<.*>.*</td>$
^<.*><.*>.*</a></td>$
Eamples:
<td nowrap valign="top" class="style1">Manhattan</td>
<td nowrap valign="top" class="style1"><a>New York</a></td>
我想阅读Manhattan
和New York
如何在同一个程序中编写2个Pattern.complie()方法? Matches()总是为我的输入行返回true,但在那之后如何进行子串操作来提取Manhattan
和New York
?任何建议都会有很大的帮助。感谢。
答案 0 :(得分:1)
使用正则表达式,如:
final Pattern pattern = Pattern.compile("<td>(.+?)</td>");
答案 1 :(得分:1)
你应该使用GROUPS。
将^<.*>.*</td>$
更改为^<.*>(?<name>.*)</td>$
返回true,您可以提取名称matcher.group("name")
(返回带有您姓名的字符串)。
修改强> 感谢伊恩。
在java7之前你必须做matcher.group(1)
。组0
将为您提供匹配的整个字符串。
答案 2 :(得分:0)
String stem[] = "<td nowrap valign='top' class='style1'>Manhattan</td>".split(">");
String stem1[] = stemp[1].split("<");
System.out.println(stemp[0]);
这是你想要的吗?
答案 3 :(得分: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);
}
}
答案 4 :(得分:0)
当你使用框架时,它更容易...... Selenium Webdriver的例子来自我的头脑:
List<WebElement> elems = wd.getElements(By.class("class1"));