/**
* 微博內容中的at正則表達式
*/
private final Pattern AT_PATTERN = Pattern.compile("@[\\u4e00-\\u9fa5\\w\\-]+");
/**
* 微博內容中的#話題#正則表達式
*/
private final Pattern TAG_PATTERN = Pattern.compile("#([^\\#|.]+)#");
Matcher m = TAG_PATTERN.matcher(content);
while (m.find()) {
String tagNameMatch = m.group();
}
Matcher m = AT_PATTERN.matcher(content);
while (m.find()) {
String atUserName = m.group();
}
補充一個,應該是常識了:
根據 Java Language Specification 的要求,Java 源代碼的字符串中的反斜線被解釋爲 Unicode 轉義 或其他字符轉義 。因此必須在字符串字面值中使用兩個反斜線,表示正則表達式受到保護,不被 Java 字節碼編譯器解釋。例如,當解釋爲正則表達式時,字符串字面值 "\b" 與單個退格字符匹配,而 "\\b" 與單詞邊界匹配。字符串字面值 "\(hello\)" 是非法的,將導致編譯時錯誤;要與字符串 (hello) 匹配,必須使用字符串字面值 "\\(hello\\)" 。