- 实例
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的一个字符
小括号: (),往往用来分组,提取我们需要匹配的字符
中括号:[] ,往往用来表示匹配字符范围 .配合其他正则特性一起使用能实现很强大的功能
.: 匹配除"\r\n"之外的任何单个字符。要匹配包括"\r\n"在内的任何字符,请使用像"[\s\S]"的模式。