高分求解,正则表达式能否有这样的逻辑(内有详细描述),望高手帮忙看看

Tianminghui 2005-10-26 04:56:30
。。。。。。。abc。。。。。。。abc。。。。。。。abc (区间内有abc3个字母但是不是这样的顺序)


用abc作为分段,得到其中的第一段???

或者怎样判断一个字串没有不包含 abc (同上也存在abc3个字母)
如果是包含abc就简单了,但是反过来怎样能够表达呢???

(.*)abc
只能得到 。。。。。。。abc。。。。。。。abc


我是使用jdk的库

Pattern p = Pattern.compile("(.*)abc");
Matcher m = p.matcher("11111cba1111111abc11111111cba111111abc111"); //除了abc其他字符任意
while (m.find()) {
System.out.println(":::::::::::::;[" + m.group(1) + "]");
}

print :
:::::::::::::;[11111cba1111111abc11111111cba111111]



不能使用间接的方法,只能一次用一个表达式,非正则表达式解法请不要提了
...全文
128 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tianminghui 2005-10-28
  • 打赏
  • 举报
回复
非常感谢,是贪婪的问题,一直都没想到这样写的,原来都是再加上其他的条件
柯本 2005-10-27
  • 打赏
  • 举报
回复
有点明白了,试试:
Pattern p = Pattern.compile("(.*?)abc");
结果为
:::::::::::::;[11111cba1111111]
:::::::::::::;[11111111cba111111]


Tianminghui 2005-10-27
  • 打赏
  • 举报
回复
回复人: keiy() ( ) 信誉:100

如果是一定要abc三个字符连在一起(顺序无所谓)
这样可以:
Pattern p=Pattern.compile("[abc][abc][abc]");

Pattern p=Pattern.compile("[abc]{3}");
------------------------
其实是用abc(3有顺序的)分段,我想要第一个abc之前的但是他会匹配到最后一个abc之前都给我匹配出来了,所以我想有没有办法判断里面没有abc字样,这样就不会匹配到最多的结果了,但是正则表达式好像不能表示出这个来。
Tianminghui 2005-10-27
  • 打赏
  • 举报
回复
回复人: keiy() ( ) 信誉:100

没完全明白楼主的意思,如果只要
用abc作为分段,得到其中的第一段???
简单地:
Pattern p=Pattern.compile("abc");
String r[]=p.split("11111cba1111111abc11111111cba111111abc111");
System.out.println(r[0]);
------------------------------------------------
是这个意思,但是这个是很长的一段表达式中的一段,我没办法单独这样分析
11111cba1111111abc11111111cba111111abc111是我需要匹配的字符串中的一段罢了,我需要使用match.group(i) 取得其中的很多部分,11111cba1111111 作为其中的第二部分,但是我只能取得11111cba1111111abc11111111cba111111这不是我想要的。


--------------同上我不能用StringTokenizer这样的方法



回复人: wb0622(波波) ( ) 信誉:100
"没有不包含 abc "什么意思?
感觉楼主想说"不包含",但是根据双重否定就是肯定的定律"没有不包含 abc "的意思就是"包含abc".
---------------------------
不错,是写错了,但是 【如果是包含abc就简单了,但是反过来怎样能够表达呢】应该排除了这个可能吧
wb0622 2005-10-26
  • 打赏
  • 举报
回复
或者怎样判断一个字串没有不包含 abc (同上也存在abc3个字母)
如果是包含abc就简单了,但是反过来怎样能够表达呢???
-------------------------------------------------------------------
"没有不包含 abc "什么意思?
感觉楼主想说"不包含",但是根据双重否定就是肯定的定律"没有不包含 abc "的意思就是"包含abc".
cutelion 2005-10-26
  • 打赏
  • 举报
回复
StringTokenizer类
split()
都可以的
bruce_wang 2005-10-26
  • 打赏
  • 举报
回复
up
楼主的语言表达能力需要加强。
柯本 2005-10-26
  • 打赏
  • 举报
回复
如果是一定要abc三个字符连在一起(顺序无所谓)
这样可以:
Pattern p=Pattern.compile("[abc][abc][abc]");

Pattern p=Pattern.compile("[abc]{3}");
柯本 2005-10-26
  • 打赏
  • 举报
回复
如果是只要abc作为分隔
Pattern p=Pattern.compile("[abc]+");
柯本 2005-10-26
  • 打赏
  • 举报
回复
没完全明白楼主的意思,如果只要
用abc作为分段,得到其中的第一段???
简单地:
Pattern p=Pattern.compile("abc");
String r[]=p.split("11111cba1111111abc11111111cba111111abc111");
System.out.println(r[0]);
Tianminghui 2005-10-26
  • 打赏
  • 举报
回复
只能一次用一个表达式

就是一次的,没有多次

62,616

社区成员

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

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