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


Remove dollar sign only from integer values not form starting with strings

下面是我的字符串,我只想从整数和浮点值中删除 $,不想从字符串中删除 $,例如"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);   

尝试:

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

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

编辑:我已经编辑了正则表达式以匹配和捕获$符号后面的数字,并将整个匹配项替换为匹配的数字

编辑 2:我已经编辑了正则表达式,仅当$符号在"之后时才进行替换

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

preg_replace('/ /',...

preg_replace('! !',...

所以

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

这是在做什么:

搜索语音标记"

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

并将其替换为"

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

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

并替换为"$1.查看正则表达式演示

此正则表达式将匹配:

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