我尝试在JAVA中的标记之间获取文本。
`
LocalDateTime localUserOriginalStartDate = new LocalDateTime(shiftStartEndDuration.getStart());
DateTime userOriginalStartDate = localUserOriginalStartDate.plusDays(1).toDateTime();
`
我想使用正则表达式来提取“HELLO TOTO”而不是“功能:”
我已经尝试过这样的事情了
`
<td colspan="2" style="font-weight:bold;">HELLO TOTO</td>
<td>Function :</td>
`
但结果与输入相同。 有什么想法吗?
我也尝试了这个正则表达式String btwTags = "<td colspan=\"2\" style=\"font-weight:bold;\">HELLO TOTO</td>\n" + "<td>Function :</td>";
Pattern pattern = Pattern.compile("<td(.*?)>(.*?)</td>");
Matcher matcher = pattern.matcher(btwTags);
while (matcher.find()) {
String group = matcher.group();
System.out.println(group);
}
,但它只捕获“功能:”
我不知道在开放(?<=<td>)(.*?)(?=</td>)
已提前感谢
答案 0 :(得分:1)
不要使用RegEx解析HTML,这是一个非常糟糕的想法......
知道查看此链接的原因: RegEx match open tags except XHTML self-contained tags
您可以使用Jsoup 来实现此目标:
String html; // your html code
Document doc = Jsoup.parse(html);
System.out.println(doc.select("td[colspan=2]").text());
答案 1 :(得分:0)
您可以使用Regex进行非常基本的HTML解析。这是我能找到的最简单的Java正则表达式:
"(?i)<td[^>]+>([^<]+)<\\/td>"
它将第一个td标记与属性和值匹配。 "HELLO TOTO"
位于第1组。
这是一个example。
对于更复杂的东西,像Jsoup这样的解析器会更好。 但是,如果HTML无效或者您编写代码的结构已经更改,即使解析器也可能失败。
答案 2 :(得分:-1)
我提供的解决方案没有使用 REGEX 希望会有所帮助..
public class Solution{
public static void main(String ...args){
String str = "<td colspan=\"2\" style=\"font-weight:bold;\">HELLO TOTO</td><td>Function :</td>";
String [] garray = str.split(">|</td>");
for(int i = 1;i < garray.length;i+=2){
System.out.println(garray[i]);
}
}
}
Output :: HELLO TOTO
Function :
我只是使用split函数来分隔给定的子串.Regex很慢并经常混淆。
欢呼快乐的编码...