java正则表达式

基本code
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

	public static void main(String[] args) {

		Pattern pattern = Pattern.compile("/place/(\\w+)/(\\d+)*");
		String url = "/place/ds1/";
		Matcher mc = pattern.matcher(url);
		System.out.println(mc.find());
		 
	}

}

注意:java要转义实际是(\w+),(\d+)
--------------------------------
主要是一些规则:
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字
\b 匹配单词的开始或结束
+       匹配1个或更多连续的数字。+是和*类似,不同的是*匹配重复任意次(可能是0次),而+则匹配重复1次或更多次。
^ 匹配字符串的开始
$ 匹配字符串的结束

^和$的用法:比如QQ号必须为5位到12位数字时,可以使用:^\d{5,12}$。

练习:

1.(/(^\s*)|(\s*$)/g, "") 中每个符号的意思?

^表示字符串必须以后面的规则开头, 在这里就是说字符串必须以\s*开头.

\s 是空格的意思, * 表示有0个或多个

\s* 就是有0个或多个空格

(^\s*) 表示的就是以0个空格或者多个空格开头

| 表示或的意思, 也就是满足| 左边的也成立, 满足 | 右面的也成立.

$ 的意思是字符串必须以前面的规则结尾

(\s*$) 的意思就是, 以0个空格或者多个空格结尾

/.../g  是正则表达式的属性, 表示全文匹配, 而不是找到一个就停止.

所以这个正则表达式替换的就是前导空格和后导空格

2.实现微博@功能
	String test = "哈哈,zh6ngy41f23ds @xxx,@aaa @ddd ,太有意思啦";
		
		   Pattern pattern = Pattern.compile("@(\\w*)((\\s)|(,))");  
	          
	        Matcher mc = pattern.matcher(test);
	        while(mc.find()){
	        	System.out.println(test.substring(mc.start(),mc.end()));
	        }


深入可以看看:http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html

你可能感兴趣的:(java正则表达式)