Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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
Php 正则表达式:将单个等号与负前视匹配=_Php_Regex - Fatal编程技术网

Php 正则表达式:将单个等号与负前视匹配=

Php 正则表达式:将单个等号与负前视匹配=,php,regex,Php,Regex,我正在构建一些需要用户输入条件的东西,然后我将用PHP解析它。我想构建一个preg_replace,用==替换=但==保持不变 例子 a=b => a==b a==b => a==b a = b => a == b a == b => a == b 因此,基本上,如果用户忘记条件需要==而不是=,系统也会允许这样做。您可以通过执行以下操作获得所需的结果: $string = "a == b" ; $string = str_replace('==', '=', $str

我正在构建一些需要用户输入条件的东西,然后我将用PHP解析它。我想构建一个preg_replace,用==替换=但==保持不变

例子

a=b => a==b
a==b => a==b
a = b => a == b
a == b => a == b

因此,基本上,如果用户忘记条件需要==而不是=,系统也会允许这样做。

您可以通过执行以下操作获得所需的结果:

$string = "a == b" ;
$string = str_replace('==', '=', $string);
$string = str_replace('=', '==', $string);

var_dump($string);

通过替换all==to=,然后替换all=to=

可以使用此正则表达式

(?<![=!])=(?![=!])
印刷品

a=b --> a==b
a==b --> a==b
a = b --> a == b
a == b --> a == b
a!=b --> a!=b

另一个选项是使用正向查找来断言左侧的是单词字符\w或空白字符\s

|

例如:

$result = preg_replace('/(?<=[\w ])=+/', '==', $str)

您可以将所有的==替换为=,然后将所有的==替换为==。但是,它不能正常工作。!=现在被替换为==我不知道你也想要这种行为。让我更新我的正则表达式来解决这个问题。另外,如果您有任何其他类似的案例,请让我知道,以便我可以为您的所有案例提供有效的解决方案。@Filip:更新了我的答案。请检查,如果您有任何其他限制,请告诉我。这可以正常工作,但也可以替换!=用!==,我需要留下来=@菲利普:我已经用积极回顾更新了我的答案。
(?<=[\w\s])=+
$result = preg_replace('/(?<=[\w ])=+/', '==', $str)