2016-09-18 7 views
-1

이러한 특정 문자 전후에있는 모든 정수를 바꿔야합니다 (() * -/% + space).특정 문자 집합 사이의 정수를 일치시키는 정규식

따라서 (34 +은 일치해야하지만 a34 + 또는 k3-은 일치해야합니다.

나는 이걸 지금까지 가지고 있는데, '/(?:-| |\(|\)|\+|\*|\/|%)(\d+)(?:-| |\(|\)|\+|\*|\/|%)/'하지만 이것은 내가 원하는대로 작동하지 않는다. 내가 원하는

output -> float y =xyz(45)xyz(3)maxxyz(3)float(ceilxyz(3)),xyz(3)float(floorxyz(3))))*2.302585092994046

$insideFunc = "float y = 45*(3-max(3-float(ceil(3)), 3-float(floor(3))))*2.302585092994046"

$pattern = '/[-()+*\/%](\d+)[-()+*\/%]/'; 
$replacement = "xyz($1)"; 
$insideFunc = preg_replace($pattern, $replacement, $insideFunc); 

, float y = xyz(45)*(xyz(3)-max(xyz(3)-float(ceil(xyz(3))), xyz(3)-float(floor(xyz(3)))))*2.302585092994046

+1

문자 클래스를 대신 사용하십시오 :'[-() + * \/%] (\ d +) [-() + * \/%]'원하지 않는 것을 설명 할 수 있습니까? – 4castle

답변

1

나는 그런 식으로 변경하고 지금 일하고있어.

$pattern = '/([-()+*\/%])(\d+)([-()+*\/%])/'; 
$replacement = "$1float($2)$3"; 
관련 문제