为了正确格式化来自第三方服务的数据,我想知道这个正则表达式是否足够简洁:
(([\d,.]+))(1?\sR\$)
改变这一点:
from 200 R$ to 400 R$ (32 products)
进入这个:
from R$ 200 to R$ 400 (32 products)
要格式化此输出,我使用Preg将文本替换为$3 $1
,如http://www.regextester.com/中所示
这是足够好还是正则表达式不够?
为了正确格式化来自第三方服务的数据,我想知道这个正则表达式是否足够简洁:
(([\d,.]+))(1?\sR\$)
改变这一点:
from 200 R$ to 400 R$ (32 products)
进入这个:
from R$ 200 to R$ 400 (32 products)
要格式化此输出,我使用Preg将文本替换为$3 $1
,如http://www.regextester.com/中所示
这是足够好还是正则表达式不够?
正则表达式:(\d+[.,]?\d*)(\s*)(R\$)
替代品:$3$2$1
测试输入:
from 200 R$ to 400 R$ (32 products)
from 0,200 R$ to 0.400 R$ (32 products)
from 2,00 R$ to 4.00 R$ (32 products)
测试输出:
from R$ 200 to R$ 400 (32 products)
from R$ 0,200 to R$ 0.400 (32 products)
from R$ 2,00 to R$ 4.00 (32 products)
如果您还想解析不带前导零的十进制数,例如.200
,请使用正则表达式
(?=[.,]?\d)(\d*[.,]?\d*)(\s*)(R\$)
您绝对可以删除第一组或括号
并替换为$2 $1
有什么1?
好处?如果在第一组的末尾有一个 1 将与 匹配[\d,.]+
,那么它也是多余的
不要将其\s
纳入您的捕获组,然后您将在结果中获得一对多
所以我认为这将是你的正则表达式:
([\d,.]+)\s(R\$)