我有以下HTML:
<tr><td><font color="#306eff">P: </font>9283-1000<font color="#306eff">
OR(换行符)
<tr><td><font color="#306eff">P: </font>9283-1000
<font color="#306eff">
我去了regexpal.com并输入了以下正则表达式:
P: </font>(.*?)<font
它匹配。但是,当我在Java中使用它时,它不匹配:
Pattern rP = Pattern.compile(">P: </font>(.*?)<font");
Matcher mP = rP.matcher(data);
if (mP.find()) {
System.out.println(mP.group(1).trim());
}
我在不同场合尝试过多个正则表达式,但它们根本不适用于Java。有什么建议?谢谢!
答案 0 :(得分:2)
你的作品对我很好。
public static void main(String[] args) {
String data = "<tr><td><font color=\"#306eff\">P: </font>9283-1000<font color=\"#306eff\"> ";
Pattern rP = Pattern.compile(">P: </font>(.*?)<font");
Matcher mP = rP.matcher(data);
if (mP.find()) {
System.out.println(mP.group(1).trim());
}
}
打印:9283-1000
。
我想问题可能在于data
如何被送入该计划
因为您可以从此输出中看到代码本身正常。
答案 1 :(得分:1)
答案 2 :(得分:0)
请尝试使用此正则表达式:
(?ims).*?>P: </font>(.*?)<font.+
示例代码
public static void main(String[] args) {
String data="<tr><td><font color=\"#306eff\">P: </font>9283-1000<font color=\"#306eff\"> ";
Pattern rP = Pattern.compile("(?ims).*?>P: </font>(.*?)<font.+");
Matcher mP = rP.matcher(data);
if (mP.find()) {
System.out.println(mP.group(1).trim());
}
}
<强>输出强>
9283-1000
答案 3 :(得分:0)
试试这个:
String data="<tr><td><font color=\"#306eff\">P: </font>9283-1000<font color=\"#306eff\"> ";
Pattern rP = Pattern.compile(">P: </font>(.*?)<font");
Matcher mP = rP.matcher(data);
if (mP.find()) {
System.out.println(mP.group(1).trim());
}
在java中,唯一区别在于转义字符。