如果一个字符在String ||的开头变为奇数次,则替换它正则表达式

时间:2014-04-17 12:32:23

标签: java regex

我正在尝试创建一个正则表达式,它将在字符串的开头查找正斜杠(/)的数量,如果它们是奇数个反向字符,则它们将被空字符串替换

    String regex = "^/(//)*";
    System.err.println("Case1: " +   "/".replaceAll(regex,""));
    System.err.println("Case2: " +   "//".replaceAll(regex,""));
    System.err.println("Case3: " +   "///".replaceAll(regex,""));
    System.err.println("Case4: " +   "/b".replaceAll(regex,""));
    System.err.println("Case5: " +   "//b".replaceAll(regex,""));
    System.err.println("Case6: " +   "///b".replaceAll(regex,""));

我的正则表达式正在处理案例1,3,4和6但是在案例2和5中它分别是打印/和/ b作为输出。

请帮忙。

2 个答案:

答案 0 :(得分:3)

在正则表达式中添加否定前瞻(?!/),以便在匹配赔率后检查没有其他/。在您的情况下,它从///中选取奇数///,因此无效。

String regex = "^/(//)*(?!/)";
                       ^^^^^ here

答案 1 :(得分:1)

试试这个

String regex = "^/(//)*(?=[^/]|$)";