字符串:
/a_xxxx/b_xxxx/c_xxx
我需要查询出xxx,这里的xxx可以是任意字符,a、b、c的位置也可能不固定,或者没有例如:
/a_111/b_222/c_333
/a_111/b_222
/b_222/a_111/c_333请问这样的正则表达式应该怎么写
/a_xxxx/b_xxxx/c_xxx
我需要查询出xxx,这里的xxx可以是任意字符,a、b、c的位置也可能不固定,或者没有例如:
/a_111/b_222/c_333
/a_111/b_222
/b_222/a_111/c_333请问这样的正则表达式应该怎么写
Pattern p = Pattern.compile("\\d+");//定义规则
String str[] = p.split(s);//进行拆分
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
String str = "/a_111/b_222/c_333xsdsd";
Pattern pattern = Pattern.compile("[abc]_([^/]+)");
Matcher m = pattern.matcher(str);
while(m.find()) {
System.out.println(m.group(1));
}
}
不是这个意思。是通过matcher先find,然后group得到,我写了一点,后面就不知道怎么写了。
String str = "/a_111/b_222/c_333";
Pattern pattern = Pattern.compile("/a_(?<a>.+?)(/|$)");
Matcher matcher = pattern.matcher(str);
System.out.println(matcher.find());
System.out.println(matcher.group("a"));主要问题有两个,一个是a、b、c相对的位置确定,另外是b、c可能没有。
如果字符串是是/a_111/b_222/c_333,我希望等到111、222、333;
如果字符串是是/a_111/c_333,我希望等到111、333;
如果字符串是是/b_222/a_111/c_333,我希望等到222、111、333;
String str = "/a_sfsdf/b_werwer/c_333";
Pattern p = Pattern.compile("[abc]_(.*?)(([^/])$|/)");
Matcher m = p.matcher(str);
while (m.find()) {
if(m.group(3)==null){
System.out.println(m.group(1));
}else{
System.out.println(m.group(1)+m.group(3));
}
}
}
String str = "/a_xxxx/c_xxx/b_2234";
Pattern p = Pattern.compile("[abc]_(.*?)($|/)");
Matcher m = p.matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
}
/a/111/b/222/c/333
这里的111、222、333可能是字母数字;
另外a、b、c可能是text这样一个数字加字母的组合,但是是固定的。
/title/111/content/222
String str = "/title/111/content/222";
Pattern pattern = Pattern.compile("[a-z]+/([^/]+)");
Matcher m = pattern.matcher(str);
while(m.find()) {
System.out.println(m.group(1));
}
}
Pattern pattern = Pattern.compile("/(title|content)/([^/]+)");
Matcher matcher = pattern.matcher(str);
while(matcher.find()){
System.out.println(matcher.group(2));
}
非常非常感谢。