从字符串中获取特定的子字符串

时间:2015-04-04 23:34:56

标签: java

我有一个很长的字符串,如:

“[text1] [text2] [text3] [text4] [Text5]%& /!”

如何将仅封装在[]中的子串插入到arrayList中。所以外面的符号就像%& /!不会插入?

2 个答案:

答案 0 :(得分:2)

使用正则表达式 - 这应该适合你:

import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexSquareBrackets{
    public static void main(String[] args) {
        String input = "[text1] [text2] [text3] [text4] [Text5] % & / !";

        Pattern pattern = Pattern.compile("\\[(.*?)\\]");
        Matcher matcher = pattern.matcher(input);
        ArrayList<String> output = new ArrayList<String>();
        while (matcher.find())
            output.add(matcher.group(1));

        //Print the items out
        System.out.println("Found Text: " + output);
    }
}

然后您将拥有以下项目:&#34; text1&#34;,&#34; text2&#34;,&#34; text3&#34;,&#34; text4&#34;,&#34; Text5&#34;在您的ArrayList输出中。

答案 1 :(得分:0)

您可以使用正则表达式来执行此操作:

\[(\w+)\]

所以,你可以得到这样的代码:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches
{
    public static void main( String args[] ){

       // String to be scanned to find the pattern.
       String line = "[text1] [text2] [text3] [text4] [Text5] % & / !";

       Pattern r = Pattern.compile("\\[(\\w+)\\]");
       List<String> tagList = new ArrayList<String>();

       // Now create matcher object.
       Matcher m = r.matcher(line);
       while (m.find()) {
          tagList.add(m.group(1));
       }

       System.out.println("Found tags: " + Arrays.toString(tagList.toArray()));
       //Output:
       //Found tags: [text1, text2, text3, text4, Text5]
    } 
}