• 技术文章 >Java >java教程

    关于基于Java中的正则表达式详解

    黄舟黄舟2017-05-21 10:16:07原创458
    正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念

    正则表达式概念

    正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。正则表过式用于操作字符串数据。

    String类里有一个方法

    public boolean matches(String regex)告知此字符串是否匹配给定的正则表达式。

    参数: regex - 用来匹配此字符串的正则表达式

    返回: 当且仅当此字符串匹配给定的正则表达式时,返回 true

    符号简介

    \\匹配反斜线字符
    \r匹配回车符
    \t匹配制表符
    \f匹配换页符
    \n匹配换行符
    [abc]匹配abc中的一个
    [^abc]匹配除了abc中的一个
    [a-z]匹配指定范围内的任意一个字符,例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。
    [A-Z]匹配指定范围内的任意一个字符,例如,“[A-Z]”可以匹配“A”到“Z”范围内的任意大写字母字符。
    [a-d[m-p]] 匹配[a-d m-p]并集 //abcd mnop中的一个
    [a-z&&[^bc]]匹配[ad-z]范围内的任意字符//取a-z中的任意但不能取bc
    [a-z&&[^m-p]]匹配[a-l q-z]范围内的任意字符//取a-z中的任意但不能取mnop
    [a-z&&[def]]匹配def交集中的任意字符
    . 匹配除“\r\n”之外的任何单个字符
    \d 匹配一个数字字符。等价于[0-9]
    \D 匹配一个非数字字符。等价于[^0-9]
    \s 匹配任何不可见字符,包括空格、制表符、换页符等等。等价于[\f\n\r\t\v]
    \S 匹配任何可见字符。等价于[^\f\n\r\t\v]
    \w 匹配单词字符:等价于[a-zA-Z_0-9]
    \W 匹配任何非单词字符。等价于[^A-Za-z0-9_]
    ^ 匹配输入字符串的开始位置
    $ 匹配输入字符串的结束位置
    \b 匹配一个单词边界
    \B 匹配非单词边界
    ? 匹配一次或一次没有
    * 匹配0次或多次
    + 匹配1次或多次
    {n} 匹配恰好n次
    {n,} 匹配至少n次
    {n,m} 匹配至少n次,但不能超过m次匹配
    \1 后向引用,表示表达式中,从左往右数,第一个左括号对应的括号内的内容。以此类推,\2表示第二个,\0表示整个表达式

    使用String类中的matches方法 例子:匹配手机号码是否正确

    public class RegDemo{ 
     public static void main(String[] args) { 
     String tel="13800001111"; 
     String reg="1[358]\\d{9}"; //1[358][0-9]{9} 
     boolean b=tel.matches(reg); 
     System.out.println(tel+":"+b); 
     }
     }

    切割:使用String类中的split方法例子: 切割字符串

    public class RegDemo{ 
     public static void main(String[] args) { 
     String str1="wang_yu_hang";
     String str2="zhao fei "; 
     String str3="tang.chun.lai";
     String [ ] strarr1=str1.split("_");
     String [ ] strarr2=str2.split(" +");
     String [ ] strarr3=str3.split("\\.");
     for(String str:strarr1){ 
     System.out.println(str);
     }
     }
     }

    替换:使用String类中的replaceAll方法例子:替换字符串

    public class RegDemo{
     public static void main(String[] args) { 
     String str="helloworld";
     str=str.replaceAll("o","xx");
     System.out.println(str);
     String ss = "tel12344556qq4564654add4646767"; 
     ss= ss.replaceAll("\\d{4,}", "#"); //4个或4个以上的数字连在一起的换成#
    System.out.println(ss);
     }
     }

    叠词替换:想要替换重复出现的单词,例如aa bbb cccc 任何的单词都有可能重复,所以使用 .(点)匹配任意字符.然后使用() 括号将该单词封装到组中. 为了重复使用某些规则就将规则封装为了组.使用()\1 1 是组号,\1引用了组.就是组中是什么这个位置也是什么.取值时,使用$1取第一个括号(组)中的值,以此类推。

    获取: 其实使用的是java.util.regex.Pattern 类; java.util.regex.Matcher 类

    Matcher类中的常用方法 :

    public boolean find() 尝试查找与该模式匹配的输入序列的下一个子序列。
    public String group() 返回由以前匹配操作所匹配的输入子序列。
    public int start() 返回以前匹配的初始索引
    public int end() 返回最后匹配字符之后的偏移量。

    例子:获取字符串

    public class RegDemo{
     public static void main(String[] args){
     Pattern p = Pattern.compile(“a*b”); //将正则表达式进行对象封装
    Matcher m = p.matcher(“aaaaab”);//用正则表达式的方法matcher和字符串关联,获取对字符串操作的匹配对象
    Matcher boolean b = m.matches();//通过Mather匹配器对象的方法对字符串进行操作
    System.out.println(b); //匹配返回true,不匹配则返回false
     } 
     }

    以上就是关于基于Java中的正则表达式详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:java 正则表达式
    上一篇:简单介绍java中堆区、方法区和栈区的代码实例 下一篇:强大的Elastisearch搜索引擎在Java中使用的实例代码
    千万级数据并发解决方案

    相关文章推荐

    • 一起来理解Java中的泛型• 整理分享Java语言表达式的五个谜题• java反射机制详细解析(总结分享)• 快速上手Java数据结构之字符串• 详细整理java枚举的使用总结
    1/1

    PHP中文网