java基础-Java正则表达式
来源:互联网 发布:麦迪生涯数据 编辑:程序博客网 时间:2024/05/16 05:32
Java正则表达式
一:什么是正则表达式1. 定义:正则表达式就是符合一定规则的字符串
2. 用途:用于专门操作字符串,正则表达式可以用来搜索、编辑或处理文本。例如
字符串匹配
字符串查找
字符串替换
字符串分割
好处:可以简化对字符串的复杂操作,正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
弊端:符号定义越多,正则越长,阅读性越差。
具体操作功能:
1,匹配:String matches方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。
2,切割:String split();
3,替换:String replaceAll(regex,str);如果regex中有定义组,可以在第二参数中通过$符号获取正则表达式中的已有的组。
import java.util.regex.Matcher;import java.util.regex.Pattern;public class RegexMatches{ public static void main( String args[] ){ // 按指定模式在字符串查找 String line = "This order was placed for QT3000! OK?"; String pattern = "(.*)(\\d+)(.*)"; // 创建 Pattern 对象 Pattern r = Pattern.compile(pattern); // 现在创建 matcher 对象 Matcher m = r.matcher(line); if (m.find( )) { System.out.println("Found value: " + m.group(0) ); System.out.println("Found value: " + m.group(1) ); System.out.println("Found value: " + m.group(2) ); } else { System.out.println("NO MATCH"); } }}
常见规则
1.字符
x 字符 x。举例:'a'表示字符a
\\ 反斜线字符。
\n 新行(换行)符('\u000A')
\r 回车符 ('\u000D')
2.字符类
[abc]a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
[0-9] 0到9的字符都包括
3.预定义字符类
. 任何字符。我的就是.字符本身,怎么表示呢? \.
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
在正则表达式里面组成单词的东西必须有这些东西组成
4.边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
就是不是单词字符的地方。
举例:helloworld?haha;xixi
5.Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
常用功能例子:
importjava.io.*;publicclassCheckEmail { publicstaticboolean checkEmail(String email) {// 验证邮箱的正则表达式 String format = "\\p{Alpha}\\w{2,15}[@][a-z0-9]{3,}[.]\\p{Lower}{2,}"; //p{Alpha}:内容是必选的,和字母字符[\p{Lower}\p{Upper}]等价。如:200896@163.com不是合法的。 //w{2,15}: 2~15个[a-zA-Z_0-9]字符;w{}内容是必选的。 如:dyh@152.com是合法的。 //[a-z0-9]{3,}:至少三个[a-z0-9]字符,[]内的是必选的;如:dyh200896@16.com是不合法的。 //[.]:'.'号时必选的; 如:dyh200896@163com是不合法的。 //p{Lower}{2,}小写字母,两个以上。如:dyh200896@163.c是不合法的。 if(email.matches(format)) { returntrue;// 邮箱名合法,返回true } else { returnfalse;// 邮箱名不合法,返回false } } publicstaticvoid main(String[] args) throwsException { String email = "cc**365@163.com";// 需要进行验证的邮箱 while(true) { email = newBufferedReader(newInputStreamReader(System.in)).readLine(); if(CheckEmail.checkEmail(email))// 验证邮箱 { System.out.println(email+"\n是合法的邮箱名。"); } else { System.out.println(email+"\n不是合法的邮箱名。"); } } }}
/*网页爬虫(蜘蛛)*/import java.io.*;import java.util.regex.*;import java.net.*;import java.util.*;class RegexTest2 {public static void main(String[] args) throws Exception{getMails_1();}public static void getMails_1()throws Exception{URL url = new URL("http://192.168.1.254:8080/myweb/mail.html");URLConnection conn = url.openConnection();BufferedReader bufIn = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line = null;String mailreg = "\\w+@\\w+(\\.\\w+)+";Pattern p = Pattern.compile(mailreg);while((line=bufIn.readLine())!=null){Matcher m = p.matcher(line);while(m.find()){System.out.println(m.group());}}}/*获取指定文档中的邮件地址。使用获取功能。Pattern Matcher*/public static void getMails()throws Exception{BufferedReader bufr = new BufferedReader(new FileReader("mail.txt"));String line = null;String mailreg = "\\w+@\\w+(\\.\\w+)+";Pattern p = Pattern.compile(mailreg);while((line=bufr.readLine())!=null){Matcher m = p.matcher(line);while(m.find()){System.out.println(m.group());}}}}
- java正则表达式基础
- Java 正则表达式基础
- java基础---->正则表达式
- java正则表达式基础
- java基础--正则表达式
- Java 正则表达式基础
- java 基础正则表达式
- java正则表达式基础
- java 正则表达式基础
- 【java】正则表达式基础
- JAVA基础------正则表达式
- 【JAVA基础】正则表达式
- 【JAVA基础】正则表达式
- Java:正则表达式基础
- Java基础:正则表达式
- java基础--正则表达式
- Java基础 正则表达式
- java基础--正则表达式
- Java IO流分析整理
- PreferenceActivity使用
- svn在Linux环境下仓库的创建与权限访问
- 结构体
- 进程管理
- java基础-Java正则表达式
- Oracle存储过程创建及调用
- Kylin正式发布:面向大数据的终极OLAP引擎方案
- 机器学习工具推荐
- 如何用Maven创建web项目(具体步骤)
- QT model/view 详细资料 总结
- 康托展开
- JAVA多线程实现的三种方式
- 微信浏览器缓存问题