首页前端开发其他前端知识正则表达式解二元方程式代码

正则表达式解二元方程式代码

时间2024-02-01 17:34:03发布访客分类其他前端知识浏览613
导读:收集整理的这篇文章主要介绍了正则表达式解二元方程式代码,觉得挺不错的,现在分享给大家,也给大家做个参考。 原文:http://blog.stevenlevithan.com/archiv...
收集整理的这篇文章主要介绍了正则表达式解二元方程式代码,觉得挺不错的,现在分享给大家,也给大家做个参考。

原文:http://blog.stevenlevithan.com/archives/algebra-with-regexes
我照着原文写出的正则还真的计算出了结果。上php例子:
复制代码 代码如下:
?php
/**
 * 计算 Ax+By=C
 */
function suan($A, $B, $C) {
 $A--;
 $B--;
 $str = str_rePEat('-', $C);
 $seArch = '/^(.*)\1{ ' . $A . '} (.*)\2{ ' . $B . '} $/';
 PReg_match($search, $str, $r);
 return array('x' => strlen($r[1]), 'y' => strlen($r[2]));
}
$A = 2;
$B = 3;
$C = 9;
$r = suan($A, $B, $C);
// 测试
echo '计算' . $A . 'x+' . $B . 'y=' . $C . 'br /> ';
echo 'x=' . ($r[x]) . 'br /> ';
echo 'y=' . ($r[y]);
// 输出
// 计算2x+3y=9
// x=3
// y=1
?>

我解释下
来一个简单的式子来说:2x+3y=9

原理:
在此函数中生成出这样的正则
复制代码 代码如下:^(.*)\1{ 1} (.*)\2{ 2} $
去匹配一个长度为9的重复字符串 “-”,匹配出两个分组的长度,就是他的x   和  y的值了

正则解释:
【(.*)】也就是0到无数个【.】点号。
\1就是引用一组。后面【{ 1} 】就是重复1次。
后半是\2就是引用2组。后面【{ 2} 】就是重复1次。
以下是那个英文博客的翻译:
二元方程17x + 12y = 51,其表达式【^(.*)\1{ 16} (.*)\2{ 11} $】。很好理解。【(.*)】也就是0到无数个【.】点号。(这里是接着上文说的,其实,【.】点号想表示的是字符“1”)
也就是0到无数个1,后面【\1】引用一次。后面【{ 16} 】就是16次。作用于前面的【\1】,也就是16次引用。加上开始的【(.*)】一共正好17次。后面一个就不说了,跟这个一样。
正则引擎会依次尝试【(.*)】中0到无数个字符“1”,0个字符“1”,1个字符“1”,2个字符“1”一直增加的尝试。直到成功,否则要尝试完所有字符“1”的最大个数(这里是51个字符“1”)。

PS: 没有考虑无解的情况,当无解时 x和y都是0

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: 正则表达式之 贪婪与非贪婪模式详...下一篇:编程语言中十六进制的正则匹配猜你在找的正则表达式相关文章 去除内容中的html2022-04-16Python正则表达式保姆式教学详细教程2022-04-16十分钟上手正则表达式 上篇2022-04-16十分钟上手正则表达式 下篇2022-04-16深入浅出正则表达式中的边界\b和\B2022-04-16轻松入门正则表达式之非贪婪匹配篇详解2022-04-16轻松掌握正则表达式findall函数详解2022-04-16正则表达式用法详解2022-04-1636个正则表达式(开发效率提高80%)2022-04-16Python正则表达式指南 推荐2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: 正则表达式解二元方程式代码
本文地址: https://pptw.com/jishu/595706.html
javascript中匹配价格的正则表达式 正则表达式的优化全面详解( 三江小渡)

游客 回复需填写必要信息