2016-12-06 56 views
3

我有以下字符串。如何获得以某个字符开头的字符串的字母,以避免其他特殊字符

#firstName.concat(' ').concat(#lastName) 

我需要获取以“#”开头的名称。但不应该跟其他特殊字符。所以在这种情况下,我需要“firstName”和“lastNAme”作为输出。我尝试了下面的方法。但它引发的模式不符合豁免。任何帮助将非常感激。

private static void getTokens(String value) { 
    Pattern p = Pattern.compile("\\(^#\\)"); 
    Matcher m = p.matcher(value); 
    String s = m.group(1); 
    System.out.println("answer : " + s); 
} 

回答

3

你需要一个简单的正则表达式像

#(\w+) 

匹配#,然后捕获1+后续字字符与\w+,然后你需要运行与.find()匹配器内while循环。

Pattern p = Pattern.compile("#(\\w+)"); 
Matcher m = p.matcher(value); 
while (m.find()) { 
    String s = m.group(1); 
    System.out.println("answer : " + s); 
} 

Java demo

+0

如果我搜索开始$字母,我要逃跑呢? – mayooran

+0

是的,可以,''\\ $(\\ w +)“',或者把它放到一个字符类中,''[$](\\ w +)”'。或者加入上面的正则表达式:'“[$#](\\ w +)”'。 –

+1

非常感谢:) – mayooran

相关问题