高分求助如何写下面的正则表达式

fuyingch 2009-11-30 05:10:34
原始字符串wcdma:OMMOID=g0uj599c-1@sbn=1101@me=1101,EQRNCID=1101,RACKNO=2,SHELFNO=2,SLOTNO=3,CPU=1要求通过正则表达式能够把字符串EQRNCID=1101,RACKNO=2,SHELFNO=2,SLOTNO=3,CPU=1等号后面的数字提取出来,并用空格分割把提取出来的数字拼成如下字符串1101 2 2 3 1,要求直接用原始串和正则表达式匹配后结果就是1101 2 2 3 1,请各位高人指教,高分相送
...全文
89 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fuyingch 2009-11-30
  • 打赏
  • 举报
回复
背景我就不介绍,已经从各位答复中受到启发,找到解决办法了,结贴给分
amdgaming 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fuyingch 的回复:]
补充一下,期望执行如下代码就可以得到结果
        String dn = "wcdma:OMMOID=g0uj599c-1@sbn=1101@me=1101,EQRNCID=1101,RACKNO=2,SHELFNO=2,SLOTNO=3,CPU=1";
        String regex = "xxx";
        Pattern pattern1 = Pattern.compile(regex);
        Matcher matcher = pattern1.matcher(str);
        String result = "";
        if(matcher.find()){
            result = matcher.group();
        }
result就是最后结果,不能再对result做任何加工。regex就是我定义的正则表达式,问题就是regex如何定义

[/Quote]

split其实内部就是正则啊,replaceall也是的,楼主,你那样没有必要把,

个人感觉。。
shine333 2009-11-30
  • 打赏
  • 举报
回复
你那个无法完成,参考group()和group(int)
fuyingch 2009-11-30
  • 打赏
  • 举报
回复
补充一下,期望执行如下代码就可以得到结果
String dn = "wcdma:OMMOID=g0uj599c-1@sbn=1101@me=1101,EQRNCID=1101,RACKNO=2,SHELFNO=2,SLOTNO=3,CPU=1";
String regex = "xxx";
Pattern pattern1 = Pattern.compile(regex);
Matcher matcher = pattern1.matcher(str);
String result = "";
if(matcher.find()){
result = matcher.group();
}
result就是最后结果,不能再对result做任何加工。regex就是我定义的正则表达式,问题就是regex如何定义
fuyingch 2009-11-30
  • 打赏
  • 举报
回复
不能写java代码解析这个字符串,只希望用原始串和正则表达式做匹配,返回结果就是我想要的结果。不能有任何的java代码加工,谢谢
shine333 2009-11-30
  • 打赏
  • 举报
回复
String str = "wcdma:OMMOID=g0uj599c-1@sbn=1101@me=1101,EQRNCID=1101,RACKNO=2,SHELFNO=2,SLOTNO=3,CPU=1";
System.out
.println(str
.replaceAll(".*EQRNCID=(\\d+),RACKNO=(\\d+),SHELFNO=(\\d+),SLOTNO=(\\d+),CPU=(\\d+).*",
"$1 $2 $3 $4 $5"));
amdgaming 2009-11-30
  • 打赏
  • 举报
回复

用 , 去split然后 去掉 只要 除 第一段 之后就可以了,将不是 数字的替换 掉 就可以


mehere8 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 amdgaming 的回复:]
Java code
String str="wcdma:OMMOID=g0uj599c-1@sbn=1101@me=1101,EQRNCID=1101,RACKNO=2,SHELFNO=2,SLOTNO=3,CPU=1";

String[] temp= str.split(",");for(int i=1; i< temp.length; i++ )
?-
[/Quote]
这个方法好好啊 赞一个
amdgaming 2009-11-30
  • 打赏
  • 举报
回复

String str = "wcdma:OMMOID=g0uj599c-1@sbn=1101@me=1101,EQRNCID=1101,RACKNO=2,SHELFNO=2,SLOTNO=3,CPU=1";

String[] temp = str.split(",");
for(int i = 1; i < temp.length; i++ )
{

System.out.println(temp[i].replaceAll("[^0-9]", ""));

}
mehere8 2009-11-30
  • 打赏
  • 举报
回复
能够用其他方法吗?
我这有个方法不知道符不符合要求
use split("[=,]") or StringTokenizer to generate tokens by the delimiter = ,
then use Character.isDigit(targetString) to check whether it starts with a digit.
if true then store this string into an array, i.e. 1101 2 2 ... as required
gao512008 2009-11-30
  • 打赏
  • 举报
回复
MARK 先试试
dongshukang 2009-11-30
  • 打赏
  • 举报
回复
wcdma.+?@EQRNCID=(.+?),RACKNO=(.+?),SHELFNO=(.+?),SLOTNO=(.+?),CPU=(.+?)
这样尝试下

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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