Java中的条件正则表达式?

时间:2010-09-10 20:01:48

标签: java regex conditional

我有一个条件正则表达式,适用于regex测试网站,例如regexlib.com,但无法让它在我的Java应用程序中运行。

但是,http://www.regular-expressions.info/conditional.html表示Java不支持条件,但我看到SO上的其他帖子暗示它确实存在。

我的RegEx的一个例子是:(?(?=^[0-9])(317866?)|[a-zA-Z0-9]{6}(317866?))

它应匹配以下任一输入:317866317866A12FCF1CS317866

如何解决此Java限制?

TIA

2 个答案:

答案 0 :(得分:6)

java.util.regex.Pattern类不支持条件表达式。 要解决这个问题,您可以使用第三方正则表达式库,例如JRegex

答案 1 :(得分:1)

这样做呢?

(?:[a-zA-Z0-9]{6})?(317866?)

或者如果你知道较长的版本总是以字母开头,那么你可以使用它:

(?:[a-zA-Z][a-zA-Z0-9]{5})?(317866?)

它将首先尝试匹配6个字母数字,然后是31786或317866,如果失败,它将回溯并尝试匹配31786或317866。