Java-字符串操作和正则表达式

hive的正则匹配用的是java那一套

一:字符串基本操作

 

String s1="ac"; //不创建对立对象的新建方式
byte bys[]=new byte[]{'e','y','l'};
String s2=new String(bys,0,bys.length); //通过数组新建对象
System.out.println(s1+s2);

 

String s1="abcdefghijklm ";
System.out.println(s1.indexOf('c'));//字符串查找
System.out.println(s1.charAt(5)); //指定位置的字符
System.out.println(s1.substring(6));//从指定位置截取
System.out.println(s1.compareToIgnoreCase("o")); //字符串比较
System.out.println(s1.trim()); //字符串去空格
System.out.println(s1.concat("mq")); //字符串连接

 

String s1="abcdefghijklm ";
System.out.println(s1.replace("e", "ll")); //字符串替换操作
System.out.println(s1.endsWith("l")); //判断结尾
System.out.println(s1.equals("kklslsk")); //判断是否相等
int a=s1.compareTo("ll");
System.out.println(a); //比较字符串的大小,Unicode
System.out.println(s1.toUpperCase());

二:字符串的格式化

 

Date d1=new Date();
String s1=String.format("%te", d1); //这个月几号?
System.out.println(s1);
String s2=String.format("%tY",d1); //今年是哪一年
System.out.println(s2);
System.out.println(String.format("%tQ", d1)); //绝对毫秒数

三:正则表达式

常用的正则表达式字符 

①字符

\\                   反斜线字符 

\0n                 带有八进制值 0 的字符 n (0 <= n <= 7) 

\0nn               带有八进制值 0 的字符 nn (0 <= n <= 7) 

\0mnn            带有八进制值 0 的字符 mnn(0 <= m <= 3、0 <= n <= 7) 

\xhh                带有十六进制值 0x 的字符 hh 

\uhhhh           带有十六进制值 0x 的字符 hhhh 

\t                制表符 ('\u0009') 

\n               新行(换行)符 ('\u000A') 

\r                回车符 ('\u000D') 

\f                换页符 ('\u000C') 

\a               报警 (bell) 符 ('\u0007') 

\e               转义符 ('\u001B') 

\cx             对应于 x 的控制符 

  
②:字符类
[abc]a、b 或 c(简单类)
[^abc]任何字符,除了 a、b 或 c(否定)
[a-zA-Z]a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]]a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]]d、e 或 f(交集)
[a-z&&[^bc]]a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]]a 到 z,而非 m 到 p:[a-lq-z](减去)
 
③:POSIX 字符类(仅 US-ASCII)
\p{Lower}小写字母字符:[a-z]
\p{Upper}大写字母字符:[A-Z]
\p{ASCII}所有 ASCII:[\x00-\x7F]
\p{Alpha}字母字符:[\p{Lower}\p{Upper}]
\p{Digit}十进制数字:[0-9]
\p{Alnum}字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct}标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph}可见字符:[\p{Alnum}\p{Punct}]
\p{Print}可打印字符:[\p{Graph}\x20]
\p{Blank}空格或制表符:[ \t]
\p{Cntrl}控制字符:[\x00-\x1F\x7F]
\p{XDigit}十六进制数字:[0-9a-fA-F]
\p{Space}空白字符:[ \t\n\x0B\f\r]
④:Greedy 数量词
X?X,一次或一次也没有
X*X,零次或多次
X+X,一次或多次
X{n}X,恰好 n 次
X{n,}X,至少 n 次
X{n,m}X,至少 n 次,但是不超过 m 次
⑤:使用方法
正规使用方法
 

Pattern p=Pattern.compile("\\d+");
Matcher m=p.matcher("33443");
System.out.println( m.matches());

简写方法
 

String s2="woshibaokaiaaaa@qq.com";
boolean b1= s2.matches("\\w+@\\w+.[a-z]+");
System.out.println(b1);

应用方法
 

String str="我是一个喜欢游泳,喜欢:唱歌,喜欢运动.喜欢看书的人";
Pattern p=Pattern.compile("\\p{Punct}"); //使用Pattern类定义一个新的模板
String[] s2=p.split(str);
for (String string : s2) {
System.out.println(string+"*");
}

举例
 

 

1,验证电话号码 010-53517230

Scanner sa=new Scanner(System.in);
System.out.println("请输入电话号码");
String ex=sa.nextLine();
if(ex.matches("\\d{3,4}-\\d{7,8}")){
System.out.println("符合");
}
else {
System.out.println("不符合");
}
sa.close();

2,验证手机号码

System.out.println("请输入手机号码");
String phone=sa.nextLine();
boolean flag=phone.matches("1[3-8]\\d{9}");
if (flag){
System.out.println("格式匹配");
}else {
System.out.println("格式不匹配");
}

3、验证用户名,只能以字母开头,字母或者下划线的组合

String username=sa.nextLine();
if(username.matches("[a-zA-Z]+[\\w|_]+")){
System.out.println("匹配");
}else{
System.out.println("不匹配");
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值