正则表达式从字符串中获取前两个未知长度的单词

时间:2010-11-17 22:18:17

标签: java regex

假设我有一个字符串,其中包含各种未知长度的单词。我计划使用正则表达式拆分字符串。类似的东西:

String resString = origString.split(".*//s.*//s")[0];

获得前两个单词的正则表达式是什么?我在考虑.*//s.*//s,所有字符,后跟一个空格,然后是所有字符,然后是另一个空格。但使用它给了我以前完全相同的字符串。我是以错误的方式解决这个问题吗?

任何帮助将不胜感激!

5 个答案:

答案 0 :(得分:12)

如果单词之间只有空格,请按\\s+分隔。拆分时,数组本身就是单词。如果你这样做,前两个将在arr[0]arr[1]

String[] arr = origString.split("\\s+");

答案 1 :(得分:5)

使用正则表达式,您可以执行以下操作:

    public static ArrayList<String> split2(String line, int n){
    line+=" ";
    Pattern pattern = Pattern.compile("\\w*\\s");
    Matcher matcher = pattern.matcher(line);
    ArrayList<String> list = new ArrayList<String>();
    int i = 0;
    while (matcher.find()){
        if(i!=n)
            list.add(matcher.group());
        else
            break;
        i++;
    }
    return list;
}

如果你想要前n个单词,或者只是这个:

    public static String split3(String line){
    line+=" ";
    Pattern pattern = Pattern.compile("\\w*\\s\\w*\\s");
    Matcher matcher = pattern.matcher(line);
    matcher.find();
    return matcher.group();
}

如果你只想要第一个和第二个词。

答案 2 :(得分:4)

如果要将其拆分为空格字符:

String[] parts = args[i].split(" ");

如果要将其拆分为任何空白字符(空格,制表符,换行符,cr):

String[] parts = args[i].split("\\s");

将多个相邻空格视为一个分隔符:

String[] parts = args[i].split(" +");

空格相同:

String[] parts = args[i].split("\\s+");

前两个字是parts[0]parts[1]

答案 3 :(得分:2)

假设您的“单词”由字母数字字符组成,则以下正则表达式将匹配前两个单词:

\w+\s+\w+

答案 4 :(得分:0)

使用以下方法。

public static String firstLettersOfWord(String word) {
    StringBuilder result = new StringBuilder();
    String[] myName = word.split("\\s+");

    for (String s : myName) {
        result.append(s.charAt(0));
    }
    return result.toString();
}}