正则表达式

来源:互联网 发布:linux怎么重命名文件 编辑:程序博客网 时间:2024/05/22 10:58

Pattern

正则表达式的编译表示形式。

字符:

        x       字符x; a 表示字符'a'        \\      反斜线字符         \t      制表符 ('\u0009')        \n      新行(换行)符 ('\u000A')        \r      回车符 ('\u000D') **字符类**        [abc]       a、b 或 c(简单类)        [^abc]      任何字符,除了 a、b 或 c(否定)        [a-zA-Z]    a 到 z 或 A 到 Z,两头的字母包括在内(范围          [a-zA-Z_0-9]    里面包含大写字母或者小写字母或者数字字符    (相当于\\w)**预定义字符:**        .       任何字符    QQ:919092924@qq.com     \.  转义 (本身就表示一个.)        \d      数字:[0-9]    [0-9]--->\d(不正确)   \\d(代码中正确的写法)        \w      单词字符:[a-zA-Z_0-9]                 java语言单词组成的一些规则需要\\w边界匹配器            ^       行的开头                    $      行的结束            \b      单词边界    **Greedy 数量词**                 X? X,一次或一次也没有  :x出现1次或者0次                X* X,零次或多次  :x出现0次或多次                X+ X,一次或多次  :x出现1次或多次                X{n} X,恰好 n 次   :x恰好出现n                X{n,} X,至少 n 次  :x至少出现n次                X{n,m} X,至少 n 次,但是不超过 m 次 

Matcher 和Matches

matcher(CharSequence input) 创建匹配给定输入与此模式的匹配器。     static boolean matches(String regex, CharSequence input)编译给定正则表达式并尝试将给定输入与其匹配。 

典型的调用顺序是

    Pattern p = Pattern.compile("a*b");    Matcher m = p.matcher("aaaaab");    boolean b = m.matches();

一步调用

    boolean b = Pattern.matches("a*b", "aaaaab");

方法:

    String regex = "[1-9]\\d{4,14}" ;    boolean b = number.matches(regex);

代码;
public static void main(String[] args) {
// 使用正则表达式校验手机号码
//键盘输入手机号码
Scanner sc = new Scanner (System.in);
//接收数据
System.out.println(“请输入你的电话号码”);
String s1= sc.nextLine();

     boolean b = s1.matches("[1][38][34568]\\d{8}");     System.out.println(b);}

结果:

请输入你的电话号码
13744443234
false

String类中有一个方法和正则表达式有关系

public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。

代码
public static void main(String[] args) {
//返回的是String类型的数组
String s = “aa-bb-cc”;

     String[] st=s.split("-");     for(int x= 0 ;x<st.length;x++){         System.out.print(st[x]);     }}

结果

aabbcc

需求:

我有如下一个字符串:”91 27 46 38 50” 请写代码实现最终输出结果是:”27 38 46 50 91”

代码
public static void main(String[] args) {
String s = “91 27 46 38 50”;

    String [ ] arr= s.split(" +");    int [] arr1 = new int[arr.length];    for(int x= 0;x<arr.length;x++){        arr1[x]=Integer.parseInt(arr[x]);    }    Arrays.sort(arr1);    //构造字符串缓冲区    StringBuilder sb = new StringBuilder();    for(int y=0;y<arr1.length;y++){        sb.append(arr1[y]).append(" ");    }    sb.toString();    System.out.println(sb); }  

结果:

27 38 46 50 91

String类中的另一个和正则相关的方法:

  public String replaceAll(String regex,String replacement):     使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

代码;
public static void main(String[] args) {
String s = “helloworld123456Java78290” ;
String st= s.replaceAll(“\d”,”爱”);
System.out.println(st);
}

结果;

helloworld爱爱爱爱爱爱Java爱爱爱爱爱

原创粉丝点击