正则表达式
是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则,有自己特殊的应用
我们先写规则的表达式我再举个例子
规则字符在java.util.regex Pattern类中
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的字符都包括
C:预定义字符类
. 任何字符。我的就是.字符本身,怎么表示呢? \.
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
在正则表达式里面组成单词的东西必须有这些东西组成
D:边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
E:Greedy 数量词
X? X,一次或一次也没有 比如""空串 就是没有
X* X,零次或多次 大于等于1次 都算多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
他的判断功能是
public boolean matches(String regex)
他的分割功能是
split()方法
他的替换功能是
public String replaceAll(String regex,String replacement)
接下来我们举几个例子
/*需求:校验qq号码.
1:要求必须是5-15位数字
2:0不能开头*/
public class test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要校对的QQ号码");
String qqnumber = scanner.nextLine();
boolean b = checkQQnumber(qqnumber);//调用CheckQQnumber方法
if(b){ //判断返回值是true还是false
System.out.println("QQ号码格式正确");
}
else{
System.out.println("QQ号码格式错误");
}
}
private static boolean checkQQnumber(String qqnumber) {
String s = "[1-9][0-9]{4,14}"; //正则表达式[1-9]代表第一个数字是1-9,[0-9]{4,14}是说4到14位可以输入0-9但是不能超过14位不能少于4位
return qqnumber.matches(s);
}
}
//需求:我有如下一个字符串:”91 27 46 38 50”,请写代码实现最终输出结果是:”27 //38 46 50 91”
//首先我们先整理思路是
//- a: 定义目标字符串"91 27 46 38 50"
//- b: 对这个字符串进行切割,得到的就是一个字符串数组
//- c: 把b中的字符串数组转换成int类型的数组
//- (1): 定义一个int类型的数组,数组的长度就是字符串数组长度
//- (2): 遍历字符串数组,获取每一个元素.将其转换成int类型的数据
//- (3): 把int类型的数据添加到int类型的数组的指定位置
//- d: 排序
//- e: 创建一个StringBuilder对象,用来记录拼接的结果
//- f: 遍历int类型的数组, 将其每一个元素添加到StringBuilder对象中
//- g: 就是把StringBuilder转换成String
//- h: 输出
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 i = 0; i < arr.length; i++) {
arr1[i] = Integer.valueOf(arr[i]);
}
int num = 0;
for (int i = 0; i < arr1.length; i++) {
for (int j = i+1; j < arr1.length; j++) {
if(arr1[i]>arr1[j]){
num = arr1[i];
arr1[i]=arr1[j];
arr1[j]=num;
}
}
}
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < arr1.length-1; i++) {
stringBuilder.append(arr1[i]+" ");
}
stringBuilder.append(arr1[arr.length-1]);
System.out.println(stringBuilder);
}
//怎样删除输出的空格忘了,就用个这么土的办法来删除把