记录Java正则表达式的含义,供查表用。
Item
|
mean
|
[ ]
|
表示可选字符
|
[^ ]
|
一个可选字符集的补集
|
|
表示出换行之外的任意一个字符
|
\d 与 \D
|
前者表示数字字符集合,后者是前者的逻辑非集合
|
\s 与 \S
|
前者表示空格,制表符,换页符中的任意一个,后者是前者的逻辑非
|
\w与 \W
|
前者表示字母,数字,下划线中的任意一个,后者是前者的逻辑非
|
^
|
表示字符串开始的地方
|
$
|
表示字符串结束的地方
|
\b 与 \B
|
不匹配任何字符,前者表示单词的边界,后者是前者的逻辑非
|
X?
|
表示X出现0或1次
|
X+
|
表示X至少出现1次
|
X*
|
表示X出现任意次
|
X{n}
|
表示X出现n次
|
X{m,n}
|
表示X出现m到n次
|
X{n,}
|
表示X出现至少n次
|
?
|
只能用在?,+,*,{m,n},{n,}后面,用以表示按照匹配模式进行最小限度的匹配
|
|
|
逻辑或
|
()
|
将表达式的某个部分作为一个单元,即作一个分组
|
\n(n表示数字)
|
有分组的情况下,表示对分组的引用
|
\
|
转义字符
|
附正则表达式使用实例,使用Pattern /Matcher类
-
import java.util.regex.*;
-
public class Console
-
{
-
public static void main(String[] args)
-
{
-
//定义正则表达式与被匹配的字符串,此处匹配时间
-
String patternStr="(0?[1-9]|1[0-2]):([0-5]\\d)([a|p]m)";
-
String matcherStr="Now is 12:49pm, we worked here from 9:00am to 18:00.";
-
//生成Pattern对象与Matcher对象
-
Pattern p=Pattern.compile(patternStr);
-
Matcher m=p.matcher(matcherStr);
-
//创建目标字符串缓冲区
-
StringBuffer sb=new StringBuffer();
-
//定义计数器
-
int count=0;
-
//打印初始字符串
-
System.out.print("original string:");
-
System.out.println(matcherStr);
-
//开始匹配检测
-
while(m.find())
-
{
-
//创建临时字符串缓冲区
-
StringBuffer temp=new StringBuffer();
-
if(m.group(3).equals("am"))
-
{//时间为am的情况的替换工作
-
//设置新的时间格式
-
temp.append(m.group(1));
-
temp.append(":");
-
temp.append(m.group(2));
-
}
-
else
-
{//时间为pm的情况的替换工作
-
//提取时间并转换
-
int time=Integer.parseInt(m.group(1));
-
time=time+12;
-
//设置新的时间格式
-
temp.append(time+":"+m.group(2));
-
}
-
//进行替换并将结果放入目标字符串缓冲区
-
m.appendReplacement(sb,temp.toString());
-
//打印每次替换的情况
-
System.out.println("["+(++count)+"] :"+m.group(0)+" replaced to"+temp.toString());
-
}
-
//将最后一次替换后剩余的字符串添加进目标字符串缓冲区
-
m.appendTail(sb);
-
//打印最后的结果
-
System.out.print("final result:");
-
System.out.println(sb.toString());
-
}
-
}
阅读(927) | 评论(0) | 转发(0) |