- 实例
java:
String str = "@liurui 你好1 @zhangiaofeng 你好2 @linjie 你好3";
Pattern p = Pattern.compile("@(?<username>\w+\s)(?<msg>[\w\W][^@]+)");
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group("username")+":"+m.group("msg"));
}
JavaScript:
var str="@shenyi 你好 @ddd hello";
var pattern=/[@](w+s)(.[^@]+)/g;
//var result=pattern.exec(str);
while(result=pattern.exec(str))
{
alert(result[1]);
alert(result[2]);
}
- 知识清单
[A-Z]: 代表大写字母A到Z
同样的[A-E] 代表大写字母A到E
实际上[A-E] 等价于[ABCDE]
[A-Ea-d] ==[ABCDEabcd]
[^A-E]: 代表 不在大写字母A-E范围内的字符
w : 代表匹配包括下划线的任何一个单词字符。等价于"[A-Za-z0-9_]"。
W: 正好和w相反。代表非w的一个字符
小括号: (),往往用来分组,提取我们需要匹配的字符
中括号:[] ,往往用来表示匹配字符范围 .配合其他正则特性一起使用能实现很强大的功能
.: 匹配除" "之外的任何单个字符。要匹配包括" "在内的任何字符,请使用像"[sS]"的模式。