基本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