正则表达式在java中的简单运用

每一段路都有不一样的领悟,理想和实现总有差距,所以青春的路需要奋斗!




正则表达式,又称正规表示法常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE)正则表达式这个概念最初是由Unix中的工具软件(例如sedgrep)普及开的。而在java中,字符串的操作还主要集中于String ,StringBuffer和StringTokenizer(作用分割字符串)。与正则表达式相比,他们只能提供简单的功能。

正则表达式是一种强大而又灵活的文本处理工具。使用正则表达式,我们能以编程的方式构造复杂的文本模式,并对输入的字符串进行搜索,一旦找到了匹配这些模式的部分,你就能随心所欲的对文本进行处理。正则表达试提供了一种完全通用的方式,能够解决各种字符串的处理相关的问题:匹配,选择,编辑以及验证。

正则表达式一般就是以某种方式来描述字符串“如果某个字符串包含有这些东西,那么他就是我要找的东西”

例如:要找一个数字,他可能有负号在他最前面,那你就写一个负号,加上一个问号,就想这样:

 -?

要描述一个整数,他可能有一位或多位阿拉伯数字:

\d

如果在其他语言中用过正则表达式,你就能法相在Java对反斜杠"\"的不同处理。在其他语言中,\\表示“我想在正则表达式中插入一个普通的(字面上)的反斜杠”,请不要赋予任何意义。而在Java中\\的意思是我要插入一个正则表达式的反斜杠,所以这个反斜杠具有特殊的意义,就像前面提到的:要描述一个整数,他可能有一位或多位阿拉伯数字,如果要在Java中正确的表达应该使用\\d。如果你只想插入一个普通的反斜杠你应该这样表示:\\\\。

要表示一个或多个之前的表达式应该使用:+

下面看几个应用正则表达式的最简单的几个例子:

package com.wukung.code;

public class Test3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//利用正则表达式最简单的途径,就是使用String类的内建功能
		System.out.println("-1234".matches("-?\\d+"));//表示可能是一个负号或什么也没有开头
		System.out.println("1234".matches("-?\\d+"));
		System.out.println("+911".matches("-?\\d+"));
		// 这个符号|表示或的意思,但由于+号在正则表达式中有特殊的含义,所以要加转义符号
		System.out.println("+911".matches("(-|\\+)?\\d+"));
	}
}



输出结果:





String类还有一个非常有用的正则表达式工具——spilt()方法,其功能是“将字符串从正则表达式匹配的地方切开”看个例子:

package com.wukung.code;

import java.util.Arrays;

public class Test4 {
	public static String knight = "Then,when you when found the shrubbery,you must"+
			"cut down the mightiest tree in the forest..."+
			"with...a herring!";
	
	public static void split(String regex){
		System.out.println(Arrays.toString(knight.split(regex)));
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		split(" ");//在用空格的地方切开,按空格来划分字符
		split("\\W+");//非单词字符,从运行结果可以看出逗号被删除了
		split("n\\W+");//字母n后面跟着一个或多个字符	
	}

}


输出结果:




String类自带的最后一个正则表达式工具是“替换”。你可以只替换正则表达式第一个匹配的子串,或是替换所有匹配的地方:看一个例子


package com.wukung.code;

public class Test6 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		String s = "3280932332";
		System.out.println(s.replaceAll("[^0-9]", ""));
	}

}


输出结果:




面试例题1:String s = "32fdsfd8fds0fdsf9323k32k",从中找出3280932332,你会怎么做。

package com.wukung.code;

public class Test6 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		String s = "3280932332";
		System.out.println(s.replaceAll("[^0-9]", ""));
	}

}
面试例题2:String str = "2014-04-05  21:23:00",要把这个字符串变成“20140405212300”,该怎样做。

package com.wukung.code;

public class Test07 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		String str = "2014-04-05  21:23:00";
		String[] s=str.split("\\D");
		for(String st:s){
			System.out.print(st);
		}
	}
}

先写到这,未完待续。。。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值