PDA

View Full Version : سوال: درخواست کد regex



Tarragon
پنج شنبه 27 شهریور 1393, 13:58 عصر
با سلام
من به یک کد regex نیاز دارم که بتونه در مثال اول + و منفی رو تشخیص بده و در مثال دوم هیچی رو تشخصی نده.
مثال اول :


(A+B)-(C)+(D-E)

مثال دوم :


(A+B-C+D-E)

یعنی میخوام هرچی + و - که در داخل هیچ پرانتزی نیست رو بهم بده.
پیشاپیش از جواب مفیدتون ممنونم.

saeed-71
پنج شنبه 27 شهریور 1393, 14:13 عصر
جواب سوال نهادو دیگه :لبخند:

Tarragon
پنج شنبه 27 شهریور 1393, 18:34 عصر
الان شما فقط همین regex رو داشته باشید سوالتون حله؟ اگر در این حده که ماشالله...

***BiDaK***
پنج شنبه 27 شهریور 1393, 18:45 عصر
اتفاقا این حدم زیادشه چون ریجکسو نداشته باشی هم مسئله حله:لبخند:

bagherok
پنج شنبه 27 شهریور 1393, 19:41 عصر
<?php
$d = '(A+B)-(C)+(D-E)';
preg_match_all("#(\([^)]+\))(\-|\+)?#", $d, $dd);
// output:
// Array
// (
// [0] => Array
// (
// [0] => (A+B)-
// [1] => (C)+
// [2] => (D-E)
// )

// [1] => Array
// (
// [0] => (A+B)
// [1] => (C)
// [2] => (D-E)
// )

// [2] => Array
// (
// [0] => -
// [1] => +
// [2] =>
// )

// )

$d2='(A+B-C+D-E)';
preg_match_all("#(\([^)]+\))(\-|\+)?#", $d2, $dd2);
// output:
// Array
// (
// [0] => Array
// (
// [0] => (A+B-C+D-E)
// )

// [1] => Array
// (
// [0] => (A+B-C+D-E)
// )

// [2] => Array
// (
// [0] =>
// )
// )
echo $d;
echo '<hr/>';
echo $dd[1][0].$dd[2][0].$dd[1][1].$dd[2][1].$dd[1][2].$dd[2][2];
echo '<hr/>';
echo $d2;
echo '<hr/>';
echo $dd2[1][0].$dd2[2][0];






(A+B)-(C)+(D-E)(A+B)-(C)+(D-E)(A+B-C+D-E)(A+B-C+D-E)

متاسفانه وقت نشده روش فک کنم.
اما بدون ریجیکس هم باید جواب بده