Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的条件正则表达式?_Java_Regex_Conditional - Fatal编程技术网

Java中的条件正则表达式?

Java中的条件正则表达式?,java,regex,conditional,Java,Regex,Conditional,我有一个条件正则表达式,它可以在regex测试网站(如regexlib.com)上运行,但无法在Java应用程序中运行 但是,表示Java不支持条件语句,但我在其他文章中也看到过这样的暗示 我的正则表达式的一个例子是:(?(?=^[0-9])(317866?)|[a-zA-Z0-9]{6}(317866?) 它应该匹配以下任一输入:317866或317866A12或FCF1CS317866 如何克服这个Java限制 类不支持TIA条件表达式。 为了解决这个问题,您可以使用第三方regexp库,例

我有一个条件正则表达式,它可以在regex测试网站(如regexlib.com)上运行,但无法在Java应用程序中运行

但是,表示Java不支持条件语句,但我在其他文章中也看到过这样的暗示

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

它应该匹配以下任一输入:
317866
317866A12
FCF1CS317866

如何克服这个Java限制


类不支持TIA

条件表达式。
为了解决这个问题,您可以使用第三方regexp库,例如

来代替它,怎么样

(?:[a-zA-Z0-9]{6})?(317866?) (?:[a-zA-Z0-9]{6})?(317866?) 或者,如果您知道较长的版本总是以字母开头,那么您可以使用:

(?:[a-zA-Z][a-zA-Z0-9]{5})?(317866?) (?:[a-zA-Z][a-zA-Z0-9]{5})?(317866?)
它将首先尝试匹配6个字母数字,然后再匹配31786或317866,如果匹配失败,它将返回并尝试匹配31786或317866。

感谢您的快速回复。。。我对正则表达式不太熟悉,也没想到它会这么简单。我的业务规则是:如果以字母开头,则忽略前6个,如果以数字开头,则从头开始匹配。因此,第二个示例似乎更完整。@RNeuendorff:第二个示例应该可以工作,但与第一个表达式匹配的
123456316866
不匹配。我想你想要第二个例子。@markbyers:这个正则表达式并不完全准确。我不想匹配像“AB1363183A23”这样的东西,但那个正则表达式确实匹配。@RNeuendorff:你确定吗?您作为示例给出的字符串甚至不包含
31786
,因此它如何匹配?@rneendorff:最好的测试是编写一个简短的Java程序来测试它们。它只需要大约3或4行代码。它是否应该匹配
31786
?如果没有,在最后6次之后,
在做什么?