Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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_Match - Fatal编程技术网

Java 验证正则表达式子匹配

Java 验证正则表达式子匹配,java,regex,match,Java,Regex,Match,我有一个词: E012PH345AN678T 以及以下正则表达式: ^E(.*)(PH(.*)AN(.*)PH(.*))T$ 这将触发以下匹配: 1:012 2:PH345AN 3:345 4: 5:678 有没有办法确保子匹配项(1,3,4,5)在同一正则表达式(a-la(\1\3\4\5)\d{3,})中至少包含3位数字?正则表达式将在我无法控制太多的Java环境中运行 更新-作为一个附加示例,此EXY2PHZ45ANUWT也应匹配。。。我只需要在全局级别的匹配中找到2,4,5。

我有一个词:

  • E012PH345AN678T
以及以下正则表达式:

  • ^E(.*)(PH(.*)AN(.*)PH(.*))T$
这将触发以下匹配:

  • 1:012
  • 2:PH345AN
  • 3:345
  • 4:
  • 5:678
有没有办法确保子匹配项(1,3,4,5)在同一正则表达式(a-la
(\1\3\4\5)\d{3,}
)中至少包含3位数字?正则表达式将在我无法控制太多的Java环境中运行

更新-作为一个附加示例,此
EXY2PHZ45ANUWT
也应匹配。。。我只需要在全局级别的匹配中找到
2,4,5
。这些数字只是我需要的一个简单例子。。。可以是字母或其他东西


谢谢。

您可以使用这个基于前瞻的正则表达式:

^(?=(\D*\d){3})E(.*?)(PH(.*?)AN|AN(.*?)PH)(.*?)T$
(?=\d{3})
是一种前瞻性方法,可确保输入中至少有3位数字

在Java中:

^(?=(\\D*\\d){3})E(.*?)(PH(.*?)AN|AN(.*?)PH)(.*?)T$

您可以使用这个基于前瞻的正则表达式:

^(?=(\D*\d){3})E(.*?)(PH(.*?)AN|AN(.*?)PH)(.*?)T$
(?=\d{3})
是一种前瞻性方法,可确保输入中至少有3位数字

在Java中:

^(?=(\\D*\\d){3})E(.*?)(PH(.*?)AN|AN(.*?)PH)(.*?)T$
将正则表达式修改为

^(?=.*\d.*\d.*\d.*)E(.*)?(PH(.*)?AN|AN(.*)?PH)(.*)?T$
当且仅当输入至少有三位数字时,这将与输入匹配,无论它们是在哪个子组中捕获的。

将正则表达式修改为

^(?=.*\d.*\d.*\d.*)E(.*)?(PH(.*)?AN|AN(.*)?PH)(.*)?T$

这将匹配输入,当且仅当输入至少有三位数字时,无论它们被捕获在哪个子组中。

你的意思是这样吗?你的意思是这样吗?\d{3}将精确匹配三位数字。要有3个或更多,请使用\d{3,}。@mazaneicha:否,相同的正则表达式也将匹配
E01234PH345AN678T
(?=\d{3})
是为了确保至少有3个数字,也可以有3个以上。我希望全局级别至少有3个数字。不是每个匹配都有3个数字。我已经更新了帖子。EXY2PHZ45ANUWT也应匹配…\d{3}将精确匹配3位数字。要有3个或更多,请使用\d{3,}。@mazaneicha:否,相同的正则表达式也将匹配
E01234PH345AN678T
(?=\d{3})
是为了确保至少有3个数字,也可以有3个以上。我希望全局级别至少有3个数字。不是每个匹配都有3个数字。我已经更新了帖子。EXY2PHZ45ANUWT也应该是匹配的。。。