Php 正则表达式:将单个等号与负前视匹配=
我正在构建一些需要用户输入条件的东西,然后我将用PHP解析它。我想构建一个preg_replace,用==替换=但==保持不变 例子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
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)