正则表达式的几种类型

【匹配】matchs方法
package regex;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
//以下所有测试均为true
//简单认识正则表达式的概念
/*System.out.println("abc".matches("..."));
p("a2427847dhsj".replaceAll("\\d","-"));
Pattern pa = Pattern.compile("[a-z]{3}"); //{3,}至少3个  {1,10}1到10之间
Matcher m = pa.matcher("hjk");
p(m.matches());*/
//上面三句可以用 p("hjk".matches("[a-z]{3}"););

//初步认识 . * + ?

/*p("a".matches("."));
p("".matches("a*"));//引号内是0个或多个字符
p("1".matches("\\d+"));//引号内1个或多个数
p("".matches("a?"));//引号内0个或1个
p("192.168.1.220".matches("\\d{1,3}\\.\\d{1,3}\\.\\d{1}\\.\\d{3}"));
p("138".matches("[0-9][0-9][0-9]"));*/

//认识范围

/*p("a".matches("[abvc]"));//取中括号里面的
p("a".matches("[^abvc]"));//【该测试为false】取除了括号里面的任意一个字符,注意一个中括号只能匹配一个字符
p("a".matches("[a-zA-Z]"));//取a-z或A-Z
p("a".matches("[a-z]|[A-Z]"));//取a-z或A-Z
p("a".matches("[a-z[A-Z]]"));//取a-z或A-Z
p("R".matches("[A-Z&&[RFG]]"));//取a-z并且是RFG三者之一
*/

//认识\S  \W  \D  \
/*
p("1".matches("\\d"));//0-9
p("a".matches("\\D"));//除0-9外任意字符
p(" \n\t\r".matches("\\s{4}"));//空白字符
p("asd".matches("\\S{3}"));//无空白字符
p("asd_2".matches("\\w{5}"));//单词[a-zA-Z_0-9]
p("-----".matches("\\W{5}"));//除了单词[a-zA-Z_0-9]之外
p("\\".matches("\\W"));
p("\\".matches("\\\\"));
*/

//posix style
//p("a".matches("\\p{Lower}"));

//认识边界

/*p("hello world".matches("^h.*"));//^表示一行的开头,开头一个字符是h后面跟0或多个字符
p("hello world".matches("^h.*ld"));
p("hello world".matches("^h.*ld$"));//$是行的结尾
p("hello world".matches("^h\\w{3}o\\b.world"));//\b是单词结尾回车,空格都算
*/

//认识空白行

System.out.println("aaa   sds".matches(".*sds$"));
p(" \n".matches("^[\\s&&[^\\n]]*\\n$"));//^在[]外面表示行首,里面表示非  。判断行首为空格但不是换行
}


public static void p(Object o){
System.out.println(o);
}
}
【切割】split方法
public class Demo {
public static void main(String[] args) {
splitDemo();
}
public static void splitDemo(){
String str = "hello  dad  dgdhgd  rr";//如果是多个空格,下面按照每(多)个空格切,则每(多)个空格切一次
String reg = " ";//多个空格可以" +"
//String reg = ".";//如果用特殊符号切割需要转义"\\."
String[] arr = str.split(reg);
for(String s:arr){
System.out.println(s);
}
}
}
【按叠词切割】
public class Demo {
public static void main(String[] args) {
splitDemo();
}
public static void splitDemo(){
String str = "sdjjkssskrreooa";
String reg = "(.)\\1+";//()可以蒋某字符封装成组,从1开始
String[] arr = str.split(reg);
for(String s:arr){
System.out.println(s);
}
}
}
【替换】replaceAll方法
【替换将重复出现的字符替换成一个】
public static void replaceDemo(){
String str = "sdjjkssskrreooa";
String reg = "$1";//通过$1获取封装的第一个组
String arr = str.replaceAll("(.)\\1+", "$1");
System.out.println(arr);
}
【获取】获取指定规则的字符串
package regex;


import java.util.regex.Matcher;
import java.util.regex.Pattern;




public class Demo {
public static void main(String[] args) {
get();
}
public static void get(){
String str = "sdhj kif lkj hdys";
String reg = "\\b[a-z]{3}\\b";
//将规则封装成对象
Pattern p = Pattern.compile(reg);
//让正则对象和要作用的字符串关联,获取匹配器对象。
Matcher m = p.matcher(str);
//讲规则作用到字符串上,并进行伏虎规则的子串查找
while(m.find()){//find相当于一个迭代器,每次查找完之后向后迭代
System.out.println(m.group());//获取匹配后的结果
System.out.println(m.start()+"..."+m.end());//查看获取字符偏移量
}
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值