一尘不染

从逻辑上讲不可能获取此特定字符串。

sql

我有3个随机的字符串,看起来像这样

1) ENTL.COMPENSATION REM      REVERSE PAYMENT COUPON ON ISIN //IT0004889033  IN A TRIPARTY //TRANSACTION WITH 95724
2) 01P ISIN DE000A1H36U5 QTY 44527000, //C/P 19696
3) COUPON ISIN XS0820547742 QTY 466750,

现在,期望获取值 IT0004889033DE000A1H36U5XS0820547742
。如果观察3个字符串,则这3个期望值在ISIN之后出现。因此,我们可以将isin作为参考,然后在ISIN之后获取值。但这似乎不是必需的。我们不应通过将某些值作为参考来获取值。

由于期望值是 IT0004889033
,它是一个12位数字的字符,因此我得到的信息是:前2个字符是字母,后9个是字母数字,最后一个是数字。仅使用此信息,就可以进行通配符搜索或其他操作并获取此12位数的值。

从逻辑上讲,我完全迷失了这一点。


阅读 96

收藏
2021-05-16

共1个答案

一尘不染

您提到 ISIN 应该用作参考。因此,唯一可以确定的是要找到的字符串以2个字母开头,然后是9个字母和/或数字,再以一个数字结尾。

我将示例文本保存为 tmp ,并运行以下 egrep 命令…似乎对我 有用

jim@debian:~/tmp$ egrep -o "[a-zA-Z]{2}[a-zA-Z0-9]{9}[0-9]{1}" tmp
IT0004889033
DE000A1H36U5
XS0820547742

上面的解决方案比以前的解决方案更 正确 ,因为它需要固定数量的字符来过滤结果。上面的代码将只返回12个字符的字符串。

我希望这有帮助!

2021-05-16