java 正则表达式高分求解

gypb 2007-12-12 03:25:57
字符串
abasdfasdf $asdfasd$ andfdf $df$ adskflasdf
asdfasdf $123$ asdfasfd

需要用正则表达式找出所有用$包含的字符串,
如上列字符串,需要返回$asdfasd$,$df$,$123$
...全文
103 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
angues1980 2007-12-12
  • 打赏
  • 举报
回复
5楼的代码有个问题,因为如果第一个字符串是符合要求的,是不会被检出来的
angues1980 2007-12-12
  • 打赏
  • 举报
回复
其实要这么说的话,应该改成下面这样的才严格符合要求


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);
}

}
吴恒 2007-12-12
  • 打赏
  • 举报
回复

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();
}
}
}
angues1980 2007-12-12
  • 打赏
  • 举报
回复
嗯,想复杂了
我想的是含有$的所以字符串了
吴恒 2007-12-12
  • 打赏
  • 举报
回复
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();
}
}
}
dracularking 2007-12-12
  • 打赏
  • 举报
回复
也可以这样


Pattern p = Pattern.compile("[\\$]\\S*");
angues1980 2007-12-12
  • 打赏
  • 举报
回复
下面这个应该行


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或多个
$是特殊符号需要转义所以写成\$
就这些吧

千万要结贴啊,就等着这些分穿下个裤衩呢

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧