我有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,
现在,期望获取值 IT0004889033 或 DE000A1H36U5 或 XS0820547742 。如果观察3个字符串,则这3个期望值在ISIN之后出现。因此,我们可以将isin作为参考,然后在ISIN之后获取值。但这似乎不是必需的。我们不应通过将某些值作为参考来获取值。
由于期望值是 IT0004889033 ,它是一个12位数字的字符,因此我得到的信息是:前2个字符是字母,后9个是字母数字,最后一个是数字。仅使用此信息,就可以进行通配符搜索或其他操作并获取此12位数的值。
从逻辑上讲,我完全迷失了这一点。
您提到 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个字符的字符串。
我希望这有帮助!