Java 8 中指定正则表达式组的索引附近的未知后视组
Unknown look-behind group near index in Java 8 for named regex grouop
我试图在 Java 8 中解析一个模式,但我不知道我做错了什么。我正在尝试创建命名的分组正则表达式。 Ant 帮助将不胜感激。
public class Test {
public static void main(String[] args) {
String p = ".*(/p/(?<listingId>[a-zA-Z0-9\-].*)/(?< sellerOfferId>[a-zA-Z0-9\-])(/)?$";
Pattern.compile(p);
}
}
这会引发错误
Exception in thread "main" java.util.regex.PatternSyntaxException: Unknown look-behind group near index 66
.*(/p/(?<listingId>[a-zA-Z0-9\-].*)/(?< sellerOfferId>[a-zA-Z0-9\-])(/)?$
^
at java.util.regex.Pattern.error(Pattern.java:1924)
at java.util.regex.Pattern.group0(Pattern.java:2829)
at java.util.regex.Pattern.sequence(Pattern.java:2018)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.group0(Pattern.java:2854)
at java.util.regex.Pattern.sequence(Pattern.java:2018)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.compile(Pattern.java:1665)
at java.util.regex.Pattern.<init>(Pattern.java:1337)
at java.util.regex.Pattern.compile(Pattern.java:1022)
at com.myproject.test.Test.main(Test.java:9)
你的正则表达式似乎有两个问题。
- 首先,命名组中
sellerOfferId
之前有一个不需要的 space。
- 其次,末尾少了一个
)
,使括号平衡。
一旦你解决了这个问题,你的模式就不会再给出任何错误。试试这个更新后的 Java 代码,
String p = ".*(/p/(?<listingId>[a-zA-Z0-9\-].*)/(?<sellerOfferId>[a-zA-Z0-9\-])(/)?$)";
^ removed space here ^ put this missing )
Pattern.compile(p);
现在不再给出 PatternSyntaxException
。
我试图在 Java 8 中解析一个模式,但我不知道我做错了什么。我正在尝试创建命名的分组正则表达式。 Ant 帮助将不胜感激。
public class Test {
public static void main(String[] args) {
String p = ".*(/p/(?<listingId>[a-zA-Z0-9\-].*)/(?< sellerOfferId>[a-zA-Z0-9\-])(/)?$";
Pattern.compile(p);
}
}
这会引发错误
Exception in thread "main" java.util.regex.PatternSyntaxException: Unknown look-behind group near index 66
.*(/p/(?<listingId>[a-zA-Z0-9\-].*)/(?< sellerOfferId>[a-zA-Z0-9\-])(/)?$
^
at java.util.regex.Pattern.error(Pattern.java:1924)
at java.util.regex.Pattern.group0(Pattern.java:2829)
at java.util.regex.Pattern.sequence(Pattern.java:2018)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.group0(Pattern.java:2854)
at java.util.regex.Pattern.sequence(Pattern.java:2018)
at java.util.regex.Pattern.expr(Pattern.java:1964)
at java.util.regex.Pattern.compile(Pattern.java:1665)
at java.util.regex.Pattern.<init>(Pattern.java:1337)
at java.util.regex.Pattern.compile(Pattern.java:1022)
at com.myproject.test.Test.main(Test.java:9)
你的正则表达式似乎有两个问题。
- 首先,命名组中
sellerOfferId
之前有一个不需要的 space。 - 其次,末尾少了一个
)
,使括号平衡。
一旦你解决了这个问题,你的模式就不会再给出任何错误。试试这个更新后的 Java 代码,
String p = ".*(/p/(?<listingId>[a-zA-Z0-9\-].*)/(?<sellerOfferId>[a-zA-Z0-9\-])(/)?$)";
^ removed space here ^ put this missing )
Pattern.compile(p);
现在不再给出 PatternSyntaxException
。