所以我试图创建一个正则表达式但没有成功。
这是我在输入字符串中得到的:
String A: "##(ABC 50a- {+} UDF 69,22g,-) {*} 3##"
String B: "##ABC 0,10,- DEF {/} 9 ABC {*} UHG 3-##"
Run Code Online (Sandbox Code Playgroud)
这就是我需要从正则表达式中处理的内容:
Result A: "(50+69,22)*3"
String B: "0,10/9*3"
Run Code Online (Sandbox Code Playgroud)
我只是无法将数字替换与操作符号结合起来。
这是我得到的:
'/[^0-9\+\-\*\/\(\)\.]/'
Run Code Online (Sandbox Code Playgroud)
感谢每一个帮助。
一个简单的解决方案是摆脱你不想要的一切。
所以替换这个:
\{(.+?)\}|[^0-9,{}()]+|(?<!\d),|,(?!\d)
Run Code Online (Sandbox Code Playgroud)
与$1.
足够简单:
$input = "(ABC 50a- {+} UDF 69,22g,-) {*} 3";
$output = preg_replace('#\{(.+?)\}|[^0-9,{}()]+|(?<!\d),|,(?!\d)#', '$1', $input);
Run Code Online (Sandbox Code Playgroud)
\{(.+?)\}部分匹配里面的所有内容{......}并输出它(它被替换为$1)[^0-9,{}()]+ 删除不属于我们要保留的字符的每个字符(它被替换为空字符串)(?<!\d),|,(?!\d) 抛出不属于数字的逗号不幸的是,如果没有更好的规范,我不能说太多。
| 归档时间: |
|
| 查看次数: |
1426 次 |
| 最近记录: |