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的。 展开
string基本机构一定是<pd>...../..../.../../.....</pd> 有可能有多个/../
我希望得到b, dd,e
需要用正则表达式表示后,用match出来需要的string。
另外,最后match出来的是这串string里面从第一个字符开始往后,被两个‘/’包裹的字符串。
比如刚刚例子中,取到b以后,cc就不能取了,因为cc前面的/已经被/b/用掉了。你这样split出来会有cc的。 展开
4个回答
展开全部
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 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
我刚刚试验了下,好像不行。而且如果单纯用("/(.*?)/");是取不到第一个的。
追答
第一步,先找出和之间内容,然后第二步,再用我那个。第一步那么简单不用教了吧。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要b...dd...e 是吧,java的我不会写,但正则给你,自己打双斜 [\\/]
pattern = "^(?:[/]?[^/]+/)([^/]+)(?:[/]?[^/]+/)([^/]+)(?:[/]?[^/]+/)([^/]+)";
print matcher.group (1, 2, 3)
pattern = "^(?:[/]?[^/]+/)([^/]+)(?:[/]?[^/]+/)([^/]+)(?:[/]?[^/]+/)([^/]+)";
print matcher.group (1, 2, 3)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Java这个很是外行,不好意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询