gpt4 book ai didi

regex - 任意顺序的代数因子 RegExr

转载 作者:行者123 更新时间:2023-12-01 10:04:09 25 4
gpt4 key购买 nike

我正在尝试编写一个匹配多项式因子的正则表达式。它必须是真或假。它要么匹配,要么不匹配。例如:

(x-5)(x+2)(x-1)

当然这三个因素的顺序可以任意,但不能重复。我可以重复,但大多数时候我不能。所以我认为,如果我能在没有重复的情况下弄清楚,那么稍微调整一下以允许重复应该很容易。

这是我尝试过的:

^\(x-5\)|\(x\+2\)|\(x-1\)$

但这不允许任何顺序。我还需要它来处理更多因素。我需要按任意顺序排列任意数量的因素。有时

我应该提到我无法运行代码。我正在使用一个名为 Canvas 的在线程序。我只有一根线可以使用。它是一个自动分级机。所以我正在检查学生是否输入了正确的答案。

有什么想法吗?

最佳答案

更新

根据 OP 的评论,他们无法运行代码并且必须检查重复项,此正则表达式最多适用于 3 个因素:

^(\(x[+-]\d+\))((?!\1)(\(x[+-]\d+\))((?!(\1|\3))(\(x[+-]\d+\)))?)?$

正则表达式查找因子 \(x[+-]\d​​+\)。然后它使用否定的先行 (?!\1) 和另一个因素检查这是否没有跟随相同的因素。然后它再次使用否定前瞻检查这是否没有跟在之前使用过的因素 (?!(\1|\3) 和最后的第三个因素。第二个和第三个因素是可选以允许匹配最多 3 个因素的模式。通过重复嵌套否定前瞻和因素的模式,可以将正则表达式扩展到 4 个或更多因素,并根据需要进行多次。对于 4 个因素,否定前瞻将是 (?!(\1|\3|\6))

Updated demo on regex101

原始答案

此正则表达式将处理任意数量的因素,但我认为您将不得不处理应用程序中的重复项。但是我不确定是否应该允许重复,因为(例如)(x-1)(x-1)x^2- 的一组有效因子2x+1.

^(\(x[+-]\d+\))+$

正则表达式查找任意数量的 ( 后跟 x+- , 一些数字 (\d+) 后跟结束符 )。通过将正则表达式包含在 ^$ 中,我们确保它必须匹配整个字符串。

Demo on regex101

如果您确实想检查重复项,这就是您可以在 PHP 中完成的方法。它使用 preg_split在因子之间的点上拆分字符串(对 使用正向后视) 和对 () 使用正向前视,然后比较具有数组中唯一值计数的数组,以确定是否存在重复项:

$factors = '(x-5)(x+2)(x-1)(x+2)';
$factors = preg_split('/(?<=\))(?=\()/', $factors);
print_r($factors);
if (count($factors) != count(array_unique($factors))) {
echo "duplicate factors found!";
};

输出:

Array ( 
[0] => (x-5)
[1] => (x+2)
[2] => (x-1)
[3] => (x+2)
)
duplicate factors found!

Demo on 3v4l.org

关于regex - 任意顺序的代数因子 RegExr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53642820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com