java如何用正则表达式来提取一个TXT文档中的字段?我想要提取一个我下载下来的网页源代码里面的字段
比如我要提取<style="display:none">赞同</div>中的赞同2个字,而且是所有的<style="display:none">标签和</div>中的汉字...
比如我要提取<style="display:none">赞同</div>中的赞同2个字,而且是所有的<style="display:none">标签和</div>中的汉字,应该怎么写呢?
展开
展开全部
试了一下正则,不是很好写。暂时还没有思路。
现在用截取字符串的方法,实现的了想要的效果。你看一下吧。
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
String value = "asdfasdkai8<style=\"display:none\"1>赞同1</div><style=\"display:none\">赞同2</div><style=\"display:none\">asdkfj2399</div>";
String startStr = "<style=\"display:none\">";
List list = new ArrayList();
while (true) {
int start = value.indexOf(startStr);
if (start == -1) {
break;
}
int end = value.indexOf("</div>");
if (end < start) {
value = value.substring(start);
continue;
}
;
list.add(value.substring(start + startStr.length(), end));
value = value.substring(end + "</div>".length());
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
现在用截取字符串的方法,实现的了想要的效果。你看一下吧。
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
String value = "asdfasdkai8<style=\"display:none\"1>赞同1</div><style=\"display:none\">赞同2</div><style=\"display:none\">asdkfj2399</div>";
String startStr = "<style=\"display:none\">";
List list = new ArrayList();
while (true) {
int start = value.indexOf(startStr);
if (start == -1) {
break;
}
int end = value.indexOf("</div>");
if (end < start) {
value = value.substring(start);
continue;
}
;
list.add(value.substring(start + startStr.length(), end));
value = value.substring(end + "</div>".length());
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
更多追问追答
追问
但是我是想提取TXT文档里面的不是自己输入的,例如我提取d:/qg.txt里面所有和之间的内容
追答
FileReader fr = new FileReader("d:\\qg.txt");
BufferedReader br = new BufferedReader(fr);
while(br.ready()){
// 读取出一行字符串
String line = br.readLine();
}
fr.close();
br.close();
用这部分代码来读取文件的内容。
全部代码如下。startStr = "";是因为读出时会有转义字符所在加了\\\
这个也会因系统不同而不同,如果得不到结果,看一下这块。
--------------------------------------------------------------
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) throws Exception {
FileReader fr = new FileReader("d:\\qg.txt");
BufferedReader br = new BufferedReader(fr);
List list = new ArrayList();
while (br.ready()) {
// 读取出一行字符串
String value = br.readLine();
String startStr = "";
while (true) {
int start = value.indexOf(startStr);
if (start == -1) {
break;
}
int end = value.indexOf("");
if (end ".length());
}
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
fr.close();
br.close();
}
}
展开全部
我猜你应该是在style前少了一个div
如果是的话正则表达式这个么写
<div.+style="display:none">([^<]+)</div>
你取分组1,就是你要的内容,例如赞同
如果你确认style前面没有div,那用
<style="display:none">([^<]+)</div>
如果是的话正则表达式这个么写
<div.+style="display:none">([^<]+)</div>
你取分组1,就是你要的内容,例如赞同
如果你确认style前面没有div,那用
<style="display:none">([^<]+)</div>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
value.matches("^[\u4e00-\u9fa5]+$")
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以直接用string截取>结束和<开始的中间的字符,这样效率更高
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询