在PHP中,我使用ereg()函数来确定指定的字符串是否可能由输入正则表达式生成



在PHP中,我使用ereg()函数来确定指定的字符串是否可能由输入正则表达式生成。我想显示所有可能由给定的正则表达式生成的字符串。我怎么能那样做?

这是我当前的代码,如果字符串可以由正则表达式$reg生成,它将打印字符串。我想通过显示regex可以生成的所有可能的字符串来使它变得更加复杂。

<?php
$reg = $_POST['regex']; 
if(isset($_POST['calc'])){
if (ereg ("$reg", "kkjjj", $st)) 
{   
for($i = 0; $i < count($st)-1; $i++)
    {
    echo "$st[$i]";
    }
} 
else 
{
  echo "String not valid";
}
}
?>

ereg函数从PHP 5.3.0开始就不推荐使用,preg_match是更好的选择,如果您需要获得所有匹配项,请使用preg_match_all,这些函数使用与perl兼容的正则表达式语法,因此您需要添加一些更改(至少添加斜杠,您的表达式相当于与perl相兼容的regexp中的'/kkjjj/')

我认为唯一的方法是暴力。即生成每个字符串并查看它是否匹配。

即使您将搜索空间限制为短字符串,这也比听起来更困难,因为regex可以包含所有UTF-8字符,这大大增加了排列的数量,而不是键盘上的"常用"字符。

所以,不是真的,Regex并不是一个可以逆转的东西。

最新更新