Java 正则表达式
来源:互联网 发布:php java 比较 编辑:程序博客网 时间:2024/05/30 05:09
正则表达式
http://www.runoob.com/regexp/regexp-syntax.html
http://blog.csdn.net/allwefantasy/article/details/3136570/
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为”元字符”)组成的文字模式。
重要标示符
- 句点符号“.”:匹配所有单个字符,包括空格、Tab字符甚至换行符。如:t.n 匹配 tan,tin,t*n,tpn,t n 等等
- 方括号“[]”:限定范围的但个字符。为了解决句点符号匹配范围过于广泛这一问题,以在方括号里面指定看来有意义的字符。此时,只有方括号里面指定的字符才参与匹配。如“t[aeio]n”只匹配tan,ten,tin,ton。
- “或”符号“|”:要匹配“toon”,使用“t(a|e|i|o|oo)n”正则表达式。这里不能使用方扩号,因为方括号只允许匹配单个字符;这里必须使用圆括号“()”。
- 匹配次数:表示匹配次数的符号用来确定紧靠该符号左边的符号出现的次数。
- “否”符号“^”:“^”符号称为“否”符号。如果用在方括号内,“^”表示不想要匹配的字符。例如,图四的正则表达式匹配所有单词,但以“X”字母开头的单词除外。
- 代替符号:\d 表示[0-9],\D 表示非数字 [^0-9],\w 表示 字母或数字 [A-Z0-9],同理 \W 表示 [^A-Z0-9],\s 空白字符 [\t\n\f]。如:\d{3} - \d{2} - \d{4}
常用正则表达式
- 电子邮箱: “^\s*\w+(?:\.{0,1}[\w-]+)@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)\.[a-zA-Z]+\s*$”
- 手机号码: “(86)*1[3|5|4|7|8]\d{9}”
- 身份证号码: (\d{17}[0-9|X])|(\d{15})
- …….
java 正则表达式
Java 中从 JDK 1.4 开始增加了对正则表达式的支持,至此正则表达式成为了 Java 中的基本类库,使用时不需要再导入第三方类库。
程序员7种基本技能是:数组,字符串与哈希表、正则表达式、调试、两门语言、一个开发环境、SQL 语言和编写软件的思想
包库
- 包:java.util.regex
- 类:java.util.regex包主要由3个类组成:Pattern、Matcher和PatternSyntaxException
- Pattern:Pattern 对象表示一个已编译的正则表达式。Pattern 类没有提供公共的构造方法。要构建一个模式,首先必须调用公共的静态 compile 方法,它将返回一个 Pattern 对象。
- Matcher 是一个靠着输入的字符串来解析这个模式和完成匹配操作的对象。与 Pattern 相似,Matcher 也没有定义公共的构造方法,需要通过调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
- PatternSyntaxException 对象是一个未检查异常,指示了正则表达式中的一个语法错误。
代码
- 分析:一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。首先一个Pattern实例订制了一个所用语法与 PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。
package xianggen.regex;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * RegexTest.java * @author xianggen * @date 2016年7月21日 上午9:13:20 */public class RegexTest { public static void main(String[] args) { String str=null; Scanner scan=new Scanner(System.in); while(scan.hasNext()){ str=scan.nextLine(); if(isPhoneNumber(str)){ System.out.println("A phoneNumber!"); }else{ System.out.println("Not a phhoneNumber!"); } if(isMail(str)) System.out.println("A emal!"); else System.out.println("Not a emal!"); } } /** * 简单移动电话号码测试 * @param str * @return */ public static boolean isPhoneNumber(String str){ String regex="^1[3|5|4|7|8]\\d{9}"; Pattern pattern=Pattern.compile(regex); Matcher match=pattern.matcher(str); if(match.find()){ return true; }else{ return false; } } /** * 简单邮箱测试 * @param str * @return */ public static boolean isMail(String str){ //My version String regex="^[0-9a-zA-Z|_]{6,}@[0-9a-zA-Z]{2,}\\.[com|cn]"; //参考网上,比较 String emailRegex="^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$" ; Pattern pattern=Pattern.compile(emailRegex); Matcher match=pattern.matcher(str); if(match.find()){ return true; }else{ return false; } } public static void simpleMatch(String str){ //直接调用Pattern的静态方法matches boolean result=Pattern.matches("java",str); //String对象直接调用matches方法!!! str.matches("xianggen@qq.com!"); }}
0 0
- Java 正则表达式正则
- 【正则表达式】Java正则表达式
- 正则表达式 JAVA正则表达式
- 【Java】【正则表达式】正则表达式
- Java 正则表达式详解_正则表达式
- java正则表达式!正则表达式踩坑!!!
- 正则表达式工具类,正则表达式封装,Java正则表达式
- Java正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- java和正则表达式
- java正则表达式详解!
- Java正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- Java烧脑驴游(八)--循环结构
- HDU 1506 Largest Rectangle in a Histogram(最大连续矩阵面积)
- PHP文件数据传输用jQuery-ajax进行浏览器->服务器->数据文件->服务器->浏览器的数据传输($_POST,$_GET,json_encode(数组数据回应),json数据解析)
- poj 2528 - Mayor's posters(线段树+离散化)
- 5招教你避免野指针
- Java 正则表达式
- android利用隐式intent跳转界面
- Android Databinding 从入门到转行(三)在xml视图将ViewModel成员注入到View的setXXX方法
- Spring Boot 入门笔记
- Qt绘制系统(Paint System)
- Java Se----语法基础(补充)
- 如何让搜索引擎抓取AJAX内容?
- iOS - Masonry 使用中的一些整理
- 今天新开通博客