仅从整数值中删除美元符号,而不是以字符串开头的形式

时间:2016-02-19 14:43:10

标签: php regex

下面是我的字符串,我想从整数和浮点值中删除$,并且不想从字符串中删除$,如#34; Mastsdsdosmsy $ 4.50 AsI"请任何人帮助我。

 $string = ' "2016-02-19","Videomssdsdsize",
 "Mastsdsdosmsy $4.50 AsI","","Masdsdtomy 
 $2.00  In-App","27753492","171352","155928",
 "109608","0.62","91.00","70.29","$2.25",
 "$246.62","$219.22","$27.40","11.11","32",
 "0.03","78937","72.02"';

我已经使用下面的正则表达式删除$但它也从字符串中删除了但我不想从字符串中删除$,如上所述 感谢

$result=str_replace('$','' , $string);   

3 个答案:

答案 0 :(得分:1)

尝试:

$result=preg_replace('/"\$(\d)/','"$1' , $string);

我还没有测试过这个解决方案。方法是使用正则表达式匹配每个$字符后跟一个数字,并用空字符串替换它。

修改: 我已编辑正则表达式以匹配并捕获$符号后面的数字,并仅使用匹配的数字替换整个匹配

编辑2 : 我已经编辑了正则表达式,只有当$符号位于"

之后才能进行替换

答案 1 :(得分:0)

您需要先将搜索字符串括在分隔符中,以便

preg_replace('/ /',...

preg_replace('! !',...

所以

$result=preg_replace('/"\$/','"', $string);

这是做什么的:

搜索演讲标记"

然后是一个美元符号\ $(转义或它将搜索行尾)

用"

代替

答案 2 :(得分:0)

您可以使用以下正则表达式替换:

'~"\$(\d+(?:\.\d+)?")~'

并替换为"$1。见regex demo

此正则表达式将匹配:

  • "\$ - "后跟文字$符号
  • (\d+(?:\.\d+)?") - 第1组匹配:
    • \d+ - 一个或多个数字
    • (?:\.\d+)? - 与文字点后跟一个或多个数字匹配的可选组(一次或零次出现)
    • " - 双引号