向后看组明显最大长度在此Java代码:存在在Java中
public class Main {
public static void main(String[] args) {
"".matches("(?<!((.{0,1}){0,1}))");
}
}
编译器(我使用JVM 1.6.0_17-B04)呼喊“异常...向后看组没有明显的最大长度“。我看到here即:
Java通过允许有限的重复使事情更进一步。您仍然无法使用星号或加号,但可以使用带有指定最大参数的问号和花括号。 Java认识到有限重复可以被重写为具有不同但固定长度的串的交替的事实。
但是...在上面的代码中有非常明显的有限最大长度-1(简单乘积)。
真正的问题是,当然,在更复杂的模式,如:
(?<!bad(\s{1,99}(\S{1,99}\s{1,99}){0,6}))good
(不错的话,那有没有不好的话背后,7字范围)。
我该如何解决?
有散步,可以在某些情况下帮助。例如,在后一个例子中,“(?<!bad(\ s {1,99}(\ S {1,99} \ s {1,99}){0,6})good),它可以被重写为“(<?!不好(\ s {1,99}(\ S {1,99} \ S {1,99})?(\ S {1,99} \ S {1,99})?(\ Š{1,99} \ S {1,99})?(\ S {1,99} \ S {1,99})?(\ S {1,99} \ S {1,99})?( \ S {1,99} \ S {1,99})?))好”。 丑,但作品(Java)。 – 2009-12-29 20:06:00