Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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
Regex RexEx将正则表达式与排列和选择的混合匹配_Regex_Permutation_Mixing - Fatal编程技术网

Regex RexEx将正则表达式与排列和选择的混合匹配

Regex RexEx将正则表达式与排列和选择的混合匹配,regex,permutation,mixing,Regex,Permutation,Mixing,我想检查我的学生是否正确回答了这个问题: 我们希望有一个从1到6的数字和一个从a到d的字母,可以写小或大。比如1d,2A,4b 我想让我的学生使用的正则表达式应该类似于[1-6][a-dA-D]或[123456][abcdABCD]或这两者的混合以及第二个的所有排列 在我的研究中,我发现对于排列: ^(?:([1-4])(?!.*\1)){4}$ 它自己工作(也不需要^$),但是当我将它与一个choices操作符(|)结合使用时,它允许像[111111][a-dA-D]这样的重复,这不是我想要

我想检查我的学生是否正确回答了这个问题:

我们希望有一个从1到6的数字和一个从a到d的字母,可以写小或大。比如1d,2A,4b

我想让我的学生使用的正则表达式应该类似于
[1-6][a-dA-D]
[123456][abcdABCD]
或这两者的混合以及第二个的所有排列

在我的研究中,我发现对于排列:

^(?:([1-4])(?!.*\1)){4}$
它自己工作(也不需要
^$
),但是当我将它与一个choices操作符(
|
)结合使用时,它允许像
[111111][a-dA-D]
这样的重复,这不是我想要的

这就是我一直在尝试的:

[\[]((?:([1-6])(?!.*\1)){6}|[1]\-[6])[\]][\[]((?:([a-dA-D])(?!.*\1)){8}|([a][\-][d][A][\-][D]|[A][\-][D][a][\-][d]))[\]]
测试数据:

[1-6][A-Da-d]
[123456][a-dA-D] 
[654321][AaBbCcDd]  
[241365][abcdABCD]

为了验证
regex
,我建议运行一些单元测试来验证您所期望的。。。至少我会有:

  • 验证它是否为有效正则表达式的测试。编辑它
  • 验证它与简单用例匹配的测试<代码>1A,
    1B
  • 针对无效用例进行验证的测试,如
    A1
    B1
    ^d
    88D

您能否让您的问题更具表达力,添加一些示例和测试数据来运行Regex?这似乎是验证其答案的一种糟糕方法。只根据一组测试用例验证答案会更容易、更清晰。或者根据一组测试用例验证答案,或者自己解析正则表达式模式来验证答案-分配很简单,因此这种验证应该是直接的。检查排列并不是很适合正则表达式。除了我的想法之外,没有测试数据流。问题是,这是一个moodle在线课程,我在大学里为一门课程设计(供以后在现实生活中使用)。在这个公式中,只能输入4个答案,它们都是明文或正则表达式。一个我需要检查所有错误的案例我除了一个正则表达式没有别的想法,所以只有三个案例我可以检查正确的答案。我起初没有想到排列,但我担心我的教授检查了这些案例,然后我就有麻烦了……:/还取决于正则表达式的风格…使用哪个解析器?