php-regex在表达式中格式化运算符
我需要获取字符串中的所有运算符(算术、比较、逻辑…)php-regex在表达式中格式化运算符,php,regex,Php,Regex,我需要获取字符串中的所有运算符(算术、比较、逻辑…) ((value+10)*10)>=300 || (array[key]-20==0&&"foo==bar"!=="") …并在它们之前和之后添加一个空格(如果不存在) …忽略引号或单引号之间的内容 传统规则: 仅在预输入/减量运算符之前添加空格 仅在post in/减量运算符之后添加空间 听起来很简单,但我不知道如何在PHP中使用正则表达式。如果有人能帮忙,谢谢 我正在尝试做一些类似于$str=preg_r
((value+10)*10)>=300 || (array[key]-20==0&&"foo==bar"!=="")
…并在它们之前和之后添加一个空格(如果不存在)
…忽略引号或单引号之间的内容
传统规则:
- 仅在预输入/减量运算符之前添加空格
- 仅在post in/减量运算符之后添加空间
我正在尝试做一些类似于
$str=preg_replace(')(?这个模式适用于PCRE引擎,我相信php就是这样
"[^"\r\n]*"(*SKIP)(*F)|\s*([\-\/+*=|<>!&]+)\s*
“[^”\r\n]*”(*跳过)(*F)|\s*([\-\/+*=|!&]+)\s*
我将使用三个正则表达式:
<?php
$str = <<<EOT
(-20+3)
((value+10)*10)>=300 || (array[key]-20==0&&"foo==bar"!=="")
EOT;
$str = preg_replace('/("[^"]*"|\([^+=&<>|*\/\\%\w\d-]*|-?\d+|[\w[\]]+|\))/', ' $1 ', $str);
$str = preg_replace('/(?<=\() +| +(?=\))/', '', $str);
$str = preg_replace('/ +/', ' ', $str);
print_r($str);
如果你做了一个正则表达式,我会很乐意修复你的正则表达式。@MarinoBoscoloNeto-我仍然会在你的帖子中粘贴该代码,以证明你已经做出了努力。(-20+3)
应该是(-20+3)
还是(-20+3)
?@WashingtonGuedes(-20+3)更好
<?php
$str = <<<EOT
(-20+3)
((value+10)*10)>=300 || (array[key]-20==0&&"foo==bar"!=="")
EOT;
$str = preg_replace('/("[^"]*"|\([^+=&<>|*\/\\%\w\d-]*|-?\d+|[\w[\]]+|\))/', ' $1 ', $str);
$str = preg_replace('/(?<=\() +| +(?=\))/', '', $str);
$str = preg_replace('/ +/', ' ', $str);
print_r($str);