Java中如何用正则表达式来提取string中两个/里面之间的内容?

比如有这个string:<pd>aaa/b/cc/dd/ff/e/</pd>string基本机构一定是<pd>...../..../.../../.....</pd>有可... 比如有这个string:<pd>aaa/b/cc/dd/ff/e/</pd>
string基本机构一定是<pd>...../..../.../../.....</pd> 有可能有多个/../
我希望得到b, dd,e
需要用正则表达式表示后,用match出来需要的string。
另外,最后match出来的是这串string里面从第一个字符开始往后,被两个‘/’包裹的字符串。
比如刚刚例子中,取到b以后,cc就不能取了,因为cc前面的/已经被/b/用掉了。你这样split出来会有cc的。
展开
 我来答
blacklong
2011-06-30 · TA获得超过1500个赞
知道大有可为答主
回答量:2745
采纳率:0%
帮助的人:1245万
展开全部
String s = "aaa/b/cc/dd/ff/e/";
Pattern pattern2 = Pattern.compile("/(.*?)/");
Matcher matcher2 = pattern2.matcher(s);
while(matcher2.find()){
System.out.println(matcher2.group(1));
}
追问
Pattern.compile("/(.*?)/");
这个可以,那如果我需要前后分别加上和
呢?
是不是这个?Pattern.compile("/(.*?)/");

从string:aaa/b/cc/dd/ff/e/
中取出b dd e

我刚刚试验了下,好像不行。而且如果单纯用("/(.*?)/");是取不到第一个的。
追答
第一步,先找出和之间内容,然后第二步,再用我那个。第一步那么简单不用教了吧。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
计名pS
2011-06-30 · TA获得超过3649个赞
知道大有可为答主
回答量:4189
采纳率:0%
帮助的人:2194万
展开全部
要b...dd...e 是吧,java的我不会写,但正则给你,自己打双斜 [\\/]

pattern = "^(?:[/]?[^/]+/)([^/]+)(?:[/]?[^/]+/)([^/]+)(?:[/]?[^/]+/)([^/]+)";

print matcher.group (1, 2, 3)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flyingFish211
2011-06-30 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
public class Test {

public static void main(String[] args) {
String str = "<pd>aaa/b/cc/dd/ff/e/</pd>";
String[] ary = str.substring("<pd>".length(), str.length() - "</pd>".length()).split("/");

for(int i = 1; i < ary.length; i+=2){
System.out.println(ary[i]);
}
}
}
---------------
b
dd
e
追问
方法很好,但有2个问题:
第一需要用正则表达式表示后,用match出来需要的string。
另外,最后match出来的是这串string里面从第一个字符开始往后,被两个‘/’包裹的字符串。
比如刚刚例子中,取到b以后,cc就不能取了,因为cc前面的/已经被/b/用掉了。你这样split出来会有cc的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清风拂明月jH
2011-06-30 · 超过19用户采纳过TA的回答
知道答主
回答量:107
采纳率:0%
帮助的人:46.2万
展开全部
Java这个很是外行,不好意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式