我有一个类似这样的字符串列表
$16,500,000(@$2,500)
$34,000(@$11.00)
$214,000(@$18.00)
$12,684,000(@$3,800)
如何提取这些字符串中的所有符号和(@$xxxx)
,使它们变得像下面这样
16500000
34000
214000
12684000
\(.*?\)|\$|,
空字符串
。请查看演示。
https://regex101.com/r/vD5iH9/42
$re = "/\\(.*?\\)|\\$|,/m";
$str = "\$16,500,000(@\$2,500)\n\$34,000(@\$11.00)\n\$214,000(@\$18.00)\n\$12,684,000(@\$3,800)";
$subst = "";
$result = preg_replace($re, $subst, $str);
要删除末尾的(@$xxxx)
字符,您可以使用正则表达式:
\(\@\$.+\)
并将其替换为空:
preg_replace("/\(\@\$.+\)/g"), "", $myStringToReplaceWith)
请确保使用 g(全局)
修饰符,以便正则表达式在找到第一个匹配项后不会停止。
以下是该正则表达式的详细说明:
\( 匹配左括号字符
\@ 匹配 @ 字符
\$ 匹配 $ 字符
.+ 匹配任何字符 1 次或多次
\) 匹配右括号字符
\$|\,|\(|\)|@|\.
这将匹配上面的所有字符。
上面的|
字符是正则表达式的或
运算符,有效地使得$或,或(或)或@或.都会被匹配。
接下来,你可以使用preg_replace
将其替换为空,并且使用g (全局)
修饰符,使得正则表达式不会在第一次匹配后返回:
preg_replace("/\$|\,|\(|\)|@|\./g"), "", $myStringToReplaceWith)
$str = preg_replace("/\(\@\$.+\)/g"), "", $str)
$str = preg_replace("/\$|\,|\(|\)|@|\./g"), "", $str)