求正则表达式
字符串A为a/b/c/d/e,去匹配一组字符串中的一个/多个,条件是:
1:忽略分隔符为正反斜杠和大小写,例如可以匹配出A/B/c\d\E
2:包含匹配,字符串A必须是匹配结果的子集,或是匹配结果必须是字符串A的子集,如果有相同的则取出相同的
例如可以匹配出k\m/a/b/c/d\E和C\d\E
如果目标字符串中有A/B/c\d\E则选出这个,不会选出k\m/a/b/c/d\E和C\d\E
3:结果必须以字符串A中的最后一个字符结尾,即e正则表达式java

解决方案 »

  1.   

    public static void main(String[] args) {
    String str = "k\\m/a/b/c/d/E";
    Pattern pattern = Pattern.compile("([a-z][/\\\\])*(a[/\\\\])?(b[/\\\\])?(c[/\\\\])?(d[/\\\\])?e",Pattern.CASE_INSENSITIVE);
    Matcher m = pattern.matcher(str);
    while(m.find()) {
    System.out.println(m.group());
    }
    }
      

  2.   

    简化一下([a-z][/\\\\])*([a-d][/\\\\])?e
    不过有些BUG。。
      

  3.   

    一个以上/或\
    String regex = "((a(/|\\\\)+)(?=b))?" +
    "((b(/|\\\\)+)(?=c))?" +
    "((c(/|\\\\)+)(?=d))?" +
    "((d(/|\\\\)+)(?=e))?" +
    "e";
    一个/或\
    String regex = "((a(/|\\\\))(?=b))?" +
    "((b(/|\\\\))(?=c))?" +
    "((c(/|\\\\))(?=d))?" +
    "((d(/|\\\\))(?=e))?" +
    "e";
      

  4.   

    你不是通过输入要匹配的字符串a/b/c/d/e 然后生成正则表达式去匹配出结果 a/b/c/d/e 或 b/c/d/e 或 c/d/e 或 d/e 或 e?
    不明白a-z都通用是什么意思
      

  5.   

    是我问错了
    List<String> lstChar = new ArrayList<String>();
    lstChar.add("A\\B/c\\d/e\\f.cpp");
    lstChar.add("A\\B/c\\d/f.cpp");
    lstChar.add("c\\d/e\\f.cpp");
    lstChar.add("d/e\\f.cpp"); String strCondition = "b/c/d/f.cpp";strCondition和lstChar 中每一个元素比较,找到一个最匹配的,条件就是我之前发的那些
    你测试哪有问题呢?
      

  6.   

    你测试哪有问题呢?
    这已经不是正则表达式的范畴了吧,个人认为你这个要根据业务写相似度的算法你测试哪有问题呢?
    这已经不是正则表达式的范畴了吧,个人认为你这个要根据业务写相似度的算法嗯 我刚才一回想也是
    其实我是想根据条件查询数据库,SQL中可以输入正则表达式
    看来还是要模糊匹配最后一节,查出列表来,然后用算法处理结果,找到最匹配的
    要不你写下java代码~~~
      

  7.   

    你测试哪有问题呢?
    这已经不是正则表达式的范畴了吧,个人认为你这个要根据业务写相似度的算法你测试哪有问题呢?
    这已经不是正则表达式的范畴了吧,个人认为你这个要根据业务写相似度的算法嗯 我刚才一回想也是
    其实我是想根据条件查询数据库,SQL中可以输入正则表达式
    看来还是要模糊匹配最后一节,查出列表来,然后用算法处理结果,找到最匹配的
    要不你写下java代码~~~
    看样子像是要找文件路径,文件路径的话应该从最后面开始一层一层目录进行匹配知道剩下找到最后一个幸存者,是这样吗?
      

  8.   

    你测试哪有问题呢?
    这已经不是正则表达式的范畴了吧,个人认为你这个要根据业务写相似度的算法你测试哪有问题呢?
    这已经不是正则表达式的范畴了吧,个人认为你这个要根据业务写相似度的算法嗯 我刚才一回想也是
    其实我是想根据条件查询数据库,SQL中可以输入正则表达式
    看来还是要模糊匹配最后一节,查出列表来,然后用算法处理结果,找到最匹配的
    要不你写下java代码~~~
    看样子像是要找文件路径,文件路径的话应该从最后面开始一层一层目录进行匹配知道剩下找到最后一个幸存者,是这样吗?
    不是的
    我当前的做法是
    1:先过滤斜杠,正反斜杠统一转化为|
    2:倒叙排列两个字符串
    3:挨个字符比较,得到匹配的最大数
    4:取出匹配最多的那些字符串,然后看和条件字符串是否是子集关系,如果是就放到结果集中