下面这个应该行
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Test { public static void main(String[] args) {
String target="abasdfasdf   $asdfasd$   andfdf   $df$   adskflasdf asdfasdf   $123$   asdfasfd ";

List list = new ArrayList();

 Pattern p = Pattern.compile("\\S*[\\$]\\S*");
 Matcher m = p.matcher(target);
 while(m.find()){
 list.add(m.group());
 }
 System.out.println(list);
}}\S指的是非空白的字符
*是0或多个
$是特殊符号需要转义所以写成\$
就这些吧千万要结贴啊,就等着这些分穿下个裤衩呢

解决方案 »

  1.   

    也可以这样
    Pattern p = Pattern.compile("[\\$]\\S*");
      

  2.   

    import java.io.*;
    import java.net.*;
    import java.util.regex.*;
    public class HrefMatch
    {
       public static void main(String[] args)
       {
          try
          {
             // get URL string from command line or use default
             String urlString;
             String input;
             // open reader for URL
                     // read contents into string buffer
            
            input ="abasdfasdf $asdfasd$ andfdf $df$ adskflasdf asdfasdf $123$ asdfasfd ";         // search for all occurrences of pattern
             String patternString = "\\S*[\\$]\\S*";
             Pattern pattern = Pattern.compile(patternString);
             Matcher matcher = pattern.matcher(input);         while (matcher.find())
             {
                int start = matcher.start();
                int end = matcher.end();
                String match = input.substring(start, end);
                System.out.println(match);
             }
          }
         
          catch (PatternSyntaxException e)
          {
             e.printStackTrace();
          }
       }
    }
      

  3.   


    import java.io.*;
    import java.net.*;
    import java.util.regex.*;
    public class HrefMatch
    {
       public static void main(String[] args)
       {
          try
          {
             // get URL string from command line or use default
             String urlString;
             String input;
             // open reader for URL
                     // read contents into string buffer
            
            input ="abasdfasdf $asdfasd$ andfdf $df$ adskflasdf asdfasdf $123$ asdfasfd ";         // search for all occurrences of pattern
             String patternString = "\\s+[\\$]\\S+[\\$]\\s+";
             Pattern pattern = Pattern.compile(patternString);
             Matcher matcher = pattern.matcher(input);         while (matcher.find())
             {
                int start = matcher.start();
                int end = matcher.end();
                String match = input.substring(start, end);
                System.out.println(match);
             }
          }
         
          catch (PatternSyntaxException e)
          {
             e.printStackTrace();
          }
       }
    }
      

  4.   

    其实要这么说的话,应该改成下面这样的才严格符合要求
    import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test { public static void main(String[] args) {
    String target="abasdfasdf   $asdfasd$   andfdf   $df$   adskflasdf asdfasdf   $123$   asdfasfd ";

    List list = new ArrayList();

    Pattern p = Pattern.compile(" \\$\\S+\\$ ");
    Matcher m = p.matcher(" " + target + " ");
     while(m.find()){
     list.add(m.group().trim());
     }
     System.out.println(list);
    }}