弟兄们,给个正则了

xun56789 2008-07-26 10:32:27
s = "abc123abc567abc"


我想取出 123a 和 567 之间的 bc
不过,只知道 bc 前面是 a, 后面是567

'a(.*)567'会取出 bc123abc

'a(.*?)567'也是取出 bc123abc

有什么方法类似懒惰(从左边开始懒惰)的方式,但是从右边开始取的
...全文
77 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovingprince 2008-07-26
  • 打赏
  • 举报
回复
如果你只是要一部分的话,你就匹配一部分就好了,不用全部写匹配的。不然引擎解析起来也耗费时间
xun56789 2008-07-26
  • 打赏
  • 举报
回复
s = "abc123abc567abc"


我想取出 123a 和 567 之间的 bc :要的结果
不过,只知道 bc 前面是 a, 后面是567 : 已知条件
xun56789 2008-07-26
  • 打赏
  • 举报
回复
没啊,我只是实际问题抽象出来了而已

前面不只一个abc的

谢谢你
lovingprince 2008-07-26
  • 打赏
  • 举报
回复
如果是我说的那样的话
那么正则就要这么写

p="^a([a-z]*)123a([a-z]*)567"

到时候取m.group(2)就可以得到你要的。
lovingprince 2008-07-26
  • 打赏
  • 举报
回复
s = "abc123abc567abc"


我想取出 123a 和 567 之间的 bc

你的描述不就是这样的吗? 不管你前面那个是不是a,你要取出的也只是
我想取出 123a 和 567 之间的 bc 啊。

难道你的意思是必须要第一个字符是a开头的,然后再考虑 123a 和 567 之间的 bc ?

比如:要是s = "bc123abc567abc" 那么这个字符串就不能要么?
xun56789 2008-07-26
  • 打赏
  • 举报
回复


to: LS

我不是要这个

现在是只知道:

前面的是 a , (不是123a)
后面的是 789
lovingprince 2008-07-26
  • 打赏
  • 举报
回复
s = "abc123abc567abc"
p="123a([a-z]*)567"

这样就可以了啊。取的时候直接取group(1)就可以拿到括号里面的东西了。

Parttern p=Parttern.comile(p);
Mather m=p.match(s);
if(m.find()){
System.out.println(m.group(1));
}


楼主快给分了,还差5分我就升级了,晕,哈哈

62,616

社区成员

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

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