我在名为“Charge_Details”的列中有此格式的字符串,但略有不同:备用信用证费用<> 1 - 360天 !<> 400,000.00美元<> 08/02/18 - 17/12/18 312 <>9
我正在尝试使用REGEX函数提取USD之前的金额。我使用的应用程序(Highbond中的ACL)只有REGEXFIND和REGEXREPLACE,语法如下:REGEXFIND(string,pattern)和REGEXREPLACE(string,pattern,new_string)函数。您可以忽略此请求的ACL脚本部分。我只需要有关REGEX部分的帮助。
它使用与任何其他应用程序相同的REGEX规则。
我试过删除“<<>>”,然后试着只返回金额,但无济于事。
我首先创建了另一个列(CATEGORY),将所有“<>”替换为“++”和“||“并且不包括“!”EXCLUDE(ALL(注册表替换(ALL(注册表替换(费用详细信息,"||“)),“!”)如果找到(“!",费用明细)
结果:备用信用证费用||1 - 360天||40万美元++ -2018年12月17日312|| 9
当我尝试使用“||“作为分隔符时,它只在第一个段中返回“SBLC FEE”,而在任何其他段中返回空白。
然后,我尝试从使用以下命令创建的CATEGORY列中提取金额:REGEXREPLACE(CATEGORY,“(\d{0,3})(,\d{3})(.\d\d)(\s\w\w\w)|)","$1$2$3$4”)
它只返回CATEGORY列中的所有内容,而不是四个组。
谢谢.
1条答案
按热度按时间bvhaajcl1#
这个例子是在Oracle中,但是应该可以帮助你使用正则表达式。WITH子句只是设置测试数据。正则表达式说,匹配零个或多个字符,后跟一个空格,后跟一个或多个数字,数字后跟零个或多个字符(非绿色)直到后面跟有文字'spaceUSD',然后是其他任何东西。注意'后面跟零个或多个字符的数字'部分周围的括号。表示一个“记住的”组。将整个字符串替换为记住的组#1。
字符串