正则表达式的基本知识
对于正则 我们以Java为例来说说 在学习正则前 首先必须要知道的就是转义字符以及使用正则的目的 一般来说我们大致把正则的功能分为四个
而关于这四个功能 Pattern和Matcher实现了 且一般这两个类都是配合使用的 其中的三个功能 判断 分割 替换在String类中都是实现的 我们先以String类说说它的这三个功能的使用吧! String类的分割功能实现 public class split1 {
public static void main(String[] args) {
String t = "abcd";
System.out.println("即将要分割的字符串:"+t);
String[] temp = t.split("\");
System.out.println("我们以为分割点");
System.out.println("分割后的字符串数目:"+temp.length);
for(String str:temp){
System.out.println("分割结果:"+str);
}
}
}
运行结果 即将要分割的字符串:abcd
我们以为分割点
分割后的字符串数目:4
分割结果:a
分割结果:b
分割结果:c
分割结果:d
这里理解了 不过值得注意的是下面这个例子 public class split1 {
public static void main(String[] args) {
String t = "abcd";
System.out.println("即将要分割的字符串:"+t);
String[] temp = t.split("\");
System.out.println("我们以为分割点");
System.out.println("分割后的字符串数目:"+temp.length);
for(int i=1;i<temp.length;i++){
System.out.println("第"+i+"个字符串:"+temp[i-1]);
}
}
}
运行结果 即将要分割的字符串:abcd
我们以为分割点
分割后的字符串数目:5
第1个字符串: 长度为:0
第2个字符串:a 长度为:1
第3个字符串:b 长度为:1
第4个字符串:c 长度为:1
第5个字符串:d 长度为:1
需要注意的是这个就了一个空串 以后要注意这个问题! String类的判断功能实现 public class matcher1 {
public static void main(String[] args) {
String t = "I love java.java";
System.out.println("即将要判断的字符串:"+t);
String rex="Islovesjava.java";
System.out.println("匹配字符串:"+rex);
if(t.matches(rex)){
System.out.println("匹配成功!");
}else{
System.out.println("匹配失败!");
}
}
}
运行结果 即将要判断的字符串:I love java.java
匹配字符串:Islovesjava.java
匹配成功!
像这种判断一整个字符串的正则可以加上 下面我会以Pattern和Matcher这两个类的判断为例子讲解 String类的替换功能实现 public class replaceAll1 {
public static void main(String[] args) {
String t = "I love java.java";
System.out.println("即将要替换的字符串:"+t);
String rex="w{4}";
System.out.println("要替换的字符串:"+rex);
System.out.println(t.replaceAll(rex,"*"));
}
}
运行结果 即将要替换的字符串:I love java.java
要替换的字符串:w{4}
I * *.*
接下来就进行Pattern和Mather的介绍吧! Pattern和Mather的判断功能 import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class matcher1 {
public static void main(String[] args) {
String t = "Ilovejava.java";
System.out.println("即将要判断的字符串:"+t);
String rex="^w+.java$";//可能初学者不是很清楚 ^是行的开头 $是行的结尾 一般^和$是在匹配整个字符串才会写
System.out.println("匹配:"+rex);
Pattern pattern=Pattern.compile(rex);//匹配的
Matcher matcher=pattern.matcher(t);//要判断的字符串
if(matcher.matches()){
System.out.println("匹配成功");
}else{
System.out.println("匹配失败");
}
}
}
运行结果 即将要判断的字符串:Ilovejava.java
匹配字符串:^w+.java$ 匹配成功
Pattern和Mather的替换功能 import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class matcher1 {
public static void main(String[] args) {
String t = "hello Word 120";
System.out.println("即将要替换的字符串:"+t);
String rex="d+";
System.out.println("替换字符串:"+rex);
Pattern pattern=Pattern.compile(rex);
Matcher matcher=pattern.matcher(t);
System.out.println(matcher.replaceAll("*"));
}
}
运行结果 即将要替换的字符串:hello Word 120
替换字符串:d+
hello Word *
Pattern和Mather的分割功能 以一个空格分割字符串 import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class matcher1 {
public static void main(String[] args) {
String t = "hello Word 120";
System.out.println("即将要替换的字符串:"+t);
String rex="s";
System.out.println("分割字符串:"+rex);
Pattern pattern=Pattern.compile(rex);
Matcher matcher=pattern.matcher(t);
String [] result=pattern.split(t);
for(String str:result){
System.out.println(str);
}
}
}
运行结果 即将要分割的字符串:hello Word 120
分割字符串:s
hello
Word
120
Pattern和Mather的获取功能 找出字符串中的出现的数字 import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class matcher1 {
public static void main(String[] args) {
String t = "hello Word 120 hello Word 110";
System.out.println("即将要获取的字符串:"+t);
String rex="d+";
System.out.println("获取字符串:"+rex);
Pattern pattern=Pattern.compile(rex);
Matcher matcher=pattern.matcher(t);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
即将要获取的字符串:hello Word 120 hello Word 110
获取字符串:d+
120
110
当然以上全是正则表达式的基础的基础!在正则表达式中,或许有些表达式很长,但也不要方,慢慢来搞几天,你就会发现很简单的,对于正则仅仅就是记得东西比较多 而且正则表达式是作为程序猿必须搞懂 弄懂的知识之一 END!!!!!!!!!!!! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |