2013-05-24 2 views
-1

У меня есть это регулярное выражениекомплексов регулярных выражений помощи preg_match PHP

preg_match_all('/(?<=|^)(?:[0-9]{1,3}(?:,| ?[0-9]{3})*(?:.[0-9]*)?|[0-9]{1,3}(?:\.?[0-9]{3})*(?:,[0-9] ​*)?)(?:\ |)(?:\$|usd|eur|euro|euros|firm|obro|€|£|gbp|dollar|aud|cdn|sgd|€)+(?=|$)|(?:\$|usd|eur|euro|euros|firm|obro|€|£|gbp|dollar|aud|cdn|sgd|€)(?:|)(?:[0-9]{1,3}(?:,| ?[0-9]{3})*(?:.[0-9]*)?|[0-9]{1,3}(?:\.?[0-9]{3})*(?:,[0-9] ​*)?)/', strtolower($html_price), $price_array1); 

можно кратко/очистить этот код с точно таким же результатом?

+3

Постройте несколько тестов и начните попытки. –

+0

Было бы очень полезно иметь образец ввода и желаемый вывод из операции регулярного выражения. Довольно уверен, что никто не собирается расшифровывать это без каких-либо усилий с вашей стороны. – phpisuber01

+0

введите строку, которая должна соответствовать этому регулярному выражению. Я уверен, что его можно написать проще, например, «eur | euro | euros», эта часть – Robert

ответ

2

Если вы ищете более удобное для поиска, автоматическое документированное регулярное выражение, то лучше всего разбить его на многие части, которые вы можете назвать, назначить переменным и использовать для создания полного регулярного выражения.

Простой пример:

$currencies = "usd|eur|euro|euros|firm|obro|€|£|gbp|dollar|aud|cdn|sgd" 
preg_match_all('/(?<=|^)(?:[0-9]{1,3}(?:,| ?[0-9]{3})*(?:.[0-9]*)?|[0-9]{1,3}(?:\.?[0-9]{3})*(?:,[0-9] ​*)?)(?:\ |)(?:\$|' + $currencies + '|€)+(?=|$)|(?:\$|'+$currencies+'|€)(?:|)(?:[0-9]{1,3}(?:,| ?[0-9]{3})*(?:.[0-9]*)?|[0-9]{1,3}(?:\.?[0-9]{3})*(?:,[0-9] ​*)?)/', strtolower($html_price), $price_array1); 

Не можете продолжать идти, потому что я понятия не имею, что это регулярное выражение должно означать.