正则表达式
来源:互联网 发布:linux目录权限 编辑:程序博客网 时间:2024/05/20 08:27
一,正则表达式基本知识:
操作复杂的文本:(1)普通字符: 字母,数字,汉字,下划线,以及没有特殊定义的标点符号,都是“普通字符”。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。简单的转义字符:
(2)标准字符集合注意区分大小写,大写是相反的意思
(3)自定义字符集合[]匹配方式,可以匹配方括号中任意一个字符
(4)量词
(5)字符边界
(6)正则语法之选择符和分组以及反向引用。
(7)预搜索
二,正则表达式匹配模式
三,常用正则表达式
四,JAVA程序中如何使用正则表达式
import java.util.regex.Matcher;import java.util.regex.Pattern;//一, 测试正则表达式对象的基本用法public class Demo01 { public static void main(String[] args) { //在这个字符串:asfsdf23323,是否符合指定的正则表达式:\w+ //表达式对象 Pattern p = Pattern.compile("\\w+"); //创建Matcher对象 Matcher m = p.matcher("asfsdf2&&3323");// boolean yesorno = m.matches(); //尝试将整个字符序列与该模式匹配// System.out.println(yesorno);// boolean yesorno2 = m.find(); //该方法扫描输入的序列,查找与该模式匹配的下一个子序列// System.out.println(yesorno2);// System.out.println(m.find());// System.out.println(m.group());// System.out.println(m.find());// System.out.println(m.group()); while(m.find()){ System.out.println(m.group()); //group(),group(0)匹配整个表达式的子字符串 System.out.println(m.group(0)); } }}//二,正则对象中分组的处理:import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 测试正则表达式对象中分组的处理 * @author Administrator * */public class Demo02 { public static void main(String[] args) { //在这个字符串:asfsdf23323,是否符合指定的正则表达式:\w+ //表达式对象 Pattern p = Pattern.compile("([a-z]+)([0-9]+)"); //创建Matcher对象 Matcher m = p.matcher("aa232**ssd445*sds223"); while(m.find()){ System.out.println(m.group()); //group(),group(0)匹配整个表达式的子字符串 System.out.println(m.group(1)); System.out.println(m.group(2)); } }}//三,正则对象的替换操作import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 测试正则表达式对象的替换操作 * @author Administrator * */public class Demo03 { public static void main(String[] args) { //表达式对象 Pattern p = Pattern.compile("[0-9]"); //创建Matcher对象 Matcher m = p.matcher("aa232**ssd445*sds223"); //替换 String newStr = m.replaceAll("#"); System.out.println(newStr); }}//四,正则对象对分割字符串的操作:import java.util.Arrays;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 测试正则表达式对象的分割字符串的操作 * @author Administrator * */public class Demo04 { public static void main(String[] args) { String str = "a232b4334c3434"; String[] arrs = str.split("\\d+"); System.out.println(Arrays.toString(arrs)); }}
五,正则表达式在JAVA中的应用
//正则主要是处理一下复杂的文本,网络爬虫的原理的代码如下:import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.nio.charset.Charset;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 网络爬虫取链接 * @author Administrator * */public class WebSpiderTest { /** * 获得urlStr对应的网页的源码内容 * @param urlStr * @return */ public static String getURLContent(String urlStr,String charset){ StringBuilder sb = new StringBuilder(); try { URL url = new URL(urlStr); BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(),Charset.forName(charset))); String temp = ""; while((temp=reader.readLine())!=null){ sb.append(temp); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return sb.toString(); } public static List<String> getMatherSubstrs(String destStr,String regexStr){ Pattern p = Pattern.compile(regexStr); //取到的超链接的地址 Matcher m = p.matcher(destStr); List<String> result = new ArrayList<String>(); while(m.find()){ result.add(m.group(1)); } return result; } public static void main(String[] args) { String destStr = getURLContent("http://www.163.com","gbk"); // Pattern p = Pattern.compile("<a[\\s\\S]+?</a>"); //取到的超链接的整个内容 List<String> result = getMatherSubstrs(destStr, "href=\"([\\w\\s./:]+?)\""); for (String temp : result) { System.out.println(temp); } }}
PS:资料主要来源于尚学堂
0 0
- 【正则表达式】正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- 正则表达式
- web项目异常类
- validates_presence_of 不适用于 boolean 字段
- ubuntu编译内核时空间不足,重启后出现
- C++的封装、多态、继承在C中的对应实现方式
- 计蒜客 数据结构 顺序表 C++
- 正则表达式
- 简单的removeView和AddView测试
- Converts Blast database format in FASTA format
- Memcache知识点梳理
- Entity Framework Model First
- 设计模式 之 模板方法模式
- 把字符串转换成整数
- jqgrid删除行
- Java集合框架(List, Set, Map, Collections)