从字符串字符和数字中提取字母

时间:2017-03-09 16:32:22

标签: java regex

我有这些Strings

"Turtle123456_fly.me"
"birdy_12345678_prd.tr"

我想要每个人的第一句话,即:

Turtle
birdy

我试过了:

 Pattern p = Pattern.compile("//d");
 String[] items = p.split(String);

但当然错了。我不熟悉使用Pattern

3 个答案:

答案 0 :(得分:3)

String s1 ="Turtle123456_fly.me";
String s2 ="birdy_12345678_prd.tr";

Pattern p = Pattern.compile("^([A-Za-z]+)[^A-Za-z]");
Matcher matcher = p.matcher(s1);

if (matcher.find()) {
    System.out.println(matcher.group(1));
}

说明: 第一部分^([A-Za-z]+)是一个组,它捕获锚定到输入开头的所有字母(使用^锚点)。 第二部分[^A-Za-z]捕获第一个非字母,并作为字母序列的终止符。 然后我们剩下要做的就是获取索引为1的组(组1是我们在第一个括号中的内容)。

答案 1 :(得分:3)

替换你不想要的东西:

String firstWord = str.replaceAll("[^a-zA-Z].*", "");

只留下你想要的部分。

正则表达式[^a-zA-Z]表示"不是字母",从第一个非字母到结尾的所有内容都是"删除"。

请参阅live demo

答案 2 :(得分:0)

也许你应该尝试这个\d+\w+.*