【发布时间】:2016-01-02 23:26:57
【问题描述】:
使用正则表达式,我希望能够获取多个 html 标签之间的文本。 这里的 HTML 只是为了表示输入,我不担心 HTML 标签,只想检索 HTML 标签中的内容(在正确的打开和关闭标签之间)。 例如,以下内容:
必填项:
<h1>Text 1</h1>
<h1><h2>Text 2</h2></h1>
<h1><h2>Text 3</h2>Xtra</h1>
<h1>Text 4<h1>extra</h1515></h1>
<h1><h1></h1></h1>
所需输出:
Text 1
Text 2
Text 3
None
None
获得的输出:
Text 1
Text 2
Text 3
Text 4<h1>extra</h1515>
<h1></h1>
我试过的正则表达式:
"<([\\S ]+)>([\\S ]+)</\\1>"
我没有得到预期的结果。
我的java代码:
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int testCases = Integer.parseInt(in.nextLine());
while(testCases>0){
String line = in.nextLine();
String tmp = line;
Pattern r = Pattern.compile("<([\\S ]+)>([\\S ]+)</\\1>", Pattern.MULTILINE);
Matcher m = r.matcher(line);
while(m.find()){
line = line.replaceAll(line, m.group(2));
m = r.matcher(line);
}
if(line != tmp)
System.out.println(line);
else
System.out.println("None");
testCases--;
}
}
}
【问题讨论】:
-
你有什么输出?您当前的代码是什么?
-
欢迎来到现实世界。 HTML 不是常规语言,您不能期望使用正则表达式对其进行解析。