复杂正则表达式帮助预匹配php
我有这个正则表达式复杂正则表达式帮助预匹配php,php,regex,preg-match,Php,Regex,Preg Match,我有这个正则表达式 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|doll
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);
是否可以以完全相同的结果缩短/清除此代码 如果您希望有一个外观更好、自动记录的regexp,最好的方法是将它分成许多部分,您可以命名、分配给变量,然后使用这些部分组成完整的regexp 简单的例子:
$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);
无法继续,因为我不知道这个regexp应该是什么意思。构建一些测试并开始尝试。从regex操作中获得示例输入和所需输出将非常有用。非常确定没有人会在你不努力的情况下破译这个。给出这个正则表达式应该匹配的字符串。我相信它可以写得更简单,例如,欧元这一部分