"<li>([\\u4e00-\\u9fa5]{2,10})([a-zA-z]+)</li>"
来源:2-2 Java中Web页面信息提取
mixiaofan
2019-11-26 14:27:56
Pattern p = Pattern.compile("<li>([\\u4e00-\\u9fa5]{2,10})([a-zA-z]+)</li>");
这一句话中的正则表达式,为什么不需要加入^$?
4回答
好帮手慕阿满
2019-11-26
同学你好,如果加上^和$,则要求完全匹配,所以如果html只有一个li标签,可以正确读取和输出,例如:<li>纽约NewYork</li>,结果如:
否则不会输出。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
好帮手慕阿满
2019-11-26
同学你好,同学将如下输出语句注释掉了,所以控制台不会输出,如:
建议同学去掉注释试试。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
mixiaofan
提问者
2019-11-26
package com.imooc.regex; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexSample { public static void main(String[] args) { StringBuilder content = new StringBuilder(); try { FileInputStream fis = new FileInputStream("C:\\My Work Material\\idea\\zhengzebiaodashi\\regex\\web\\sample.html"); InputStreamReader isr = new InputStreamReader(fis, "utf-8"); BufferedReader bufferedReader = new BufferedReader(isr); String lineText = ""; // 整行读取,直到读取为空 while ((lineText = bufferedReader.readLine()) != null) { // System.out.println(lineText); content.append(lineText+"\n"); } bufferedReader.close(); // System.out.println(content); } catch (Exception e) { e.printStackTrace(); } // Pattern类是正则表达式的类 // 1.创建正则表达式对象 Pattern p = Pattern.compile("^<li>([\\u4e00-\\u9fa5]{2,10})([a-zA-z]+)</li>$"); // 2.匹配正则表达式 Matcher m = p.matcher(content); // 3.查找匹配的结果 while (m.find()){ // System.out.println(m.group(0)); String chs = m.group(1); String eng = m.group(2); System.out.println(chs + "--" + eng); } } }
这里我加上之后什么输出都没有了
好帮手慕阿满
2019-11-26
同学你好,同学是指开头^和结尾的$吗?这里可以不加的,如果加上,表示要完全匹配正则表达式,如果不加,表示可以匹配子字符串。
例如:正则表达为[123][a-d],如果不加^和$,则字符串1a1可以匹配1a,如果加上^和$,1a1不能完全匹配,提示没有匹配项。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题
回答 1