1、java正则表达式在我们对字符进行判断是否符合需求时,极大的方便了我们的编程。正则是一个难点,但是在开发中最常用的也就莫过于几个方法,和一些表达式
(1)首先我们来掌握下,学习正则我们必须首先知道一些字符串的基本方法
判断功能
public boolean matches(String regex)
分割功能
public String[] split(String regex)
替换功能
public String replaceAll(String regex,String replacement)
(2)匹配符有很多种,但是常用的莫过于这几种,掌握下面足以应付日常开发。
A:字符
x 字符 x。举例:'a'表示字符a
\\ 反斜线字符。
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
B:字符类
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
[0-9] 0到9的字符都包括
\"^[\u4e00-\u9fa5]{0,}$" 汉字
[\u4e00-\u9fa5]
[\u4e00-\u9fa5]
C:预定义字符类
. 任何字符。我的就是.字符本身,怎么表示呢? \.
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
在正则表达式里面组成单词的东西必须有这些东西组成
D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
就是不是单词字符的地方。
举例:hello world?haha;xixi
E:Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
(3)、最后配上自己写的几个案例测试
package jsu.java.regex;
import java.lang.reflect.Array;
import java.util.Arrays;
import org.junit.Test;
public class ChaMatch {
//选取字符中的所有字母字符
/**
* 结果
* fdjkafdasjfafjdfdaklfdasjkffkds
*[C@392fe8
*/
@Test
public void getAz(){
String str="fdjka ,fdasjf afjdfdakl ,fdasjkf:,}{fkds,334";
String regex="[^a-zA-Z]";
String arr = str.replaceAll(regex, "");
System.out.println(arr);
char[] array = arr.toCharArray();
System.out.println(array.toString());
}
/**
* false
false
true
true
*/
@Test
public void matchRegex(){
String str=",ffg 75843 ][\\ hsere我们 jdfhasjk1";
String regex="[a-z]";
boolean flag = str.matches(regex);
String regex1="\\.{1,}[a,z]";
System.out.println(flag);
boolean flag2 = str.matches(regex1);
System.out.println(flag2);
String regex3=".+";
boolean flag3 = str.matches(regex3);
System.out.println(flag3);
String regex4=",[a-z]+.+1$";
boolean flag4 = str.matches(regex4);
System.out.println(flag4);
}
/**
* true
*/
@Test
public void matchChinaese(){
String str="A我没让你就放开手发的身份卡";
String regex="A[\u4e00-\u9fa5]+";
boolean flag = str.matches(regex);
System.out.println(flag);
}
}