-1

我有类似 str = Adob​​e Flash Player 11.4.402.287 (11.3 MB) 的字符串,我只需要提取 Adob​​e Flash Player 作为输出。请建议..

我尝试使用正则表达式:

String str = "Adobe Flash Player 11.4.402.287 (11.3 MB)";
        Pattern p = Pattern.compile("^[a-zA-Z]+([0-9]+).*");
        Matcher m = p.matcher(str);

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

3 回答 3

2

正如所建议的@MarkoTopolink,正则表达式[\\p{L}\\s]+帮助了我。谢谢。

于 2012-10-30T08:59:05.203 回答
1

尝试这个:

    String str = "Adobe Flash Player 11.4.402.287 (11.3 MB)";
    Pattern p = Pattern.compile("^([a-zA-Z ]+)([0-9]+).*");
    Matcher m = p.matcher(str);

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

您的尝试有两个问题:

  1. 分组是使用完成的(),你没有为你真正想要的文本定义一个组
  2. 您需要添加一个空格才能获得多个单词。
于 2012-10-30T09:02:09.750 回答
0

您可以使用正则表达式:

String str = "Adobe Flash Player 11.4.402.287 (11.3 MB)";
String [] strs = str.split("([ |0-9|.|(.*MB)]*) [ |0-9|.|(.*MB)]*");
for (String strng : strs) {
    System.out.println(strng.trim());
}
于 2012-10-30T09:00:01.627 回答