正则表达式:将单个等号匹配为负前瞻=

时间:2019-01-23 16:12:48

标签: php regex

我正在构建一些需要用户输入条件的内容,然后将用PHP对其进行解析。我想构建一个preg_replace,将=替换为==,但==保持不变。

示例

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

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

3 个答案:

答案 0 :(得分:3)

您可以使用此正则表达式,

(?<![=!])=(?![=!])

确保仅在=之前或之后没有=的情况下选择==,并用$arr = array("a=b", "a==b", "a = b", "a == b", "a!=b"); foreach($arr as $s) { echo $s, ' --> ', preg_replace('/(?<![=!])=(?![=!])/', '==', $s) , "\n"; } 代替它

Demo

示例PHP代码,

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

打印

{{1}}

答案 1 :(得分:2)

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

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

var_dump($string);

通过将所有==替换为=,然后将所有=替换为==

答案 2 :(得分:1)

另一种选择是在后面使用正向断言来断言左侧是字字符\w还是空白字符\s

(?<=[\w\s])=+

Regex demo | Php demo

例如:

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