我有以下正则表达式来验证字符串中的条件,我将其写在在线正则表达式验证器上,但是当我在Java代码中使用它时,会出现异常:
"(^([a-z]{1,6})(?(?=(_))(([_])([0-9]{0,4})?)|[a-zA-Z]{0,})[a-zA-Z]{0,}?@sample[.]com)"
异常是线程“ main”中的异常java.util.regex.PatternSyntaxException:索引16附近的未知内联修饰符 (^([az] {1,6})(?(?=())(([[])([0-9] {0,4})?)| [a- zA-Z] {0,})[a-zA-Z] {0,}?@ sample [。] com)
非常感谢您的帮助。
答案 0 :(得分:1)
(^([a-z]{1,6})(?(?=(_))(([_])([0-9]{0,4})?)|[a-zA-Z]{0,})[a-zA-Z]{0,}?@sample[.]com)
|
^ --- if clause is not supported in JAVA
您的问题是因为(?(?=)
。
如果您是非捕获组,则应该为(?:(?=)
Java不支持if clause (?(?=))
。 PCRE支持这一点。