zoukankan      html  css  js  c++  java
  • Java基础之字符串匹配大全

    博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 

    首先介绍几个概念:

    字节:byte 字符:字母或者汉字等 位:计算机语言  用来表示0或1

    1 bit     = 1  二进制数据 

    1 byte  = 8  bit  
    1 字母 = 1  byte = 8 bit 英文输入 如阿拉伯数字同样如此

    1 汉字 = 2  byte = 16 bit 汉语输入

    varchar(400) 表达最大长度为400 字节,即 400个字母或者200个汉字。

    1M=1024*1024 byte

     

    1、正则表达式

    首先介绍下正规表达式,它的出现为匹配查询提供了便利,成为数据校验的“利器”。支持数字、英文字母、空格等,我们只讲最常用的。如果有更深层次的需要,可以查阅Java API 包名为“java.util.regex”


    ^:代表字符串开始,*:代表多个字符

     如上图regex 意为以c开头有多个b的字符串,结果输出cbb


    $:代表结尾,?:代表一个字符,\d:代表数字

    如上图regex意为找到一个以a开头,有一个b,且结尾以一个数字的串,结果输出ab1


    \s:代表空格

     如上图,将str里两个空格变成一个空格,输出

     

    \w:代表单个字符,.:点代表任意一个字符

     如上图,意为以任意字符开头,有多个d,并以字符结尾的字符串,输出结果为cddd

    下面是几个常用的例子:


    如上图,regex表示以0-9或a-f或A-F为内容的4个字符,结尾以数字,输出结果为c6dD3


    如上图,regex表示4个字符,输出结果为了abb1,缺点在于把数字1也当成了字符。


    如上图,两种方法均可验证18 位身份证,但好坏大家一眼就能看的出,输出中间那个串


    如上图,方法比较正宗,用Pattern定义对象,使用Matcher定义对象来匹配,表示多个a一个b 的字符串,匹配结果b为true。


    如上图,输出结果,模糊匹配与精确匹配。

    2、字符串简单匹配

    如上图最简单匹配,也最迅速,也最有效。

    补充,"a".matches("[^abc]");取除了abc之外的其它字符

    "a".matches("[abc]|[ABC]");

    "a".matches("abc[ABC]");

    "a".matches("abcABC");都表示取abc或者ABC

    匹配网址

    public class TestEmail {
    public static void main(String[] args) {
    try {
    BufferedReader br = new BufferedReader(new FileReader(
    "D:\\share\\is0.html"));
    String line="";
    while((line=br.readLine())!=null){
    parse(line);
    }
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }


    private static void parse(String line) {
    // TODO Auto-generated method stub
    /**w表示以字母或者.或者-*/
    Pattern p=Pattern.compile("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+");
    java.util.regex.Matcher m=p.matcher(line);
    while(m.find()){
    System.out.println(m.group());
    }
    }
    }

  • 相关阅读:
    洛谷P1020/CODEVS1044 导弹拦截(拦截导弹)
    洛谷P1541/CODEVS1068 乌龟棋
    洛谷1791/CODEVS1214线段覆盖
    NOIP2002提高组/洛谷P1031均分纸牌
    【USACO2009Decsilver T1 自私的食草者
    洛谷P1024/NOI题库7891(2.3)/NOIP2001提高组T1 一元三次方程求解
    洛谷1086/NOI题库1.13.38/NOIP2004普及组第2题 花生采摘
    NOIP2010/洛谷P1525关押罪犯
    洛谷P1115最大子段和
    1244-作为一个java开发者的知识储备
  • 原文地址:https://www.cnblogs.com/fengju/p/6174513.html
Copyright © 2011-2022 走看看