首页 > 解决方案 > 在正则表达式匹配和否定条件后获取文本

问题描述

我正在练习我的正则表达式技能,试图过滤与BNB交易中不同的“令牌”。

这是一个例子:

原文:

['Sender Receiver Amount Currency',
 '0x10ed43c718714eb63d5aa57b78b54704e256024e',
 '0x5b9f811d38fc6c1017e0774c552235b33f564deb',
 '1.00 WBNB',
 '0x10ed43c718714eb63d5aa57b78b54704e256024e',
 '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c',
 '1.00 BNB',
 '0x5b9f811d38fc6c1017e0774c552235b33f564deb',
 '0x6b1ecb203d82fec24f8b684f7906ef98ec9abf0a',
 '596.32 RBH',
 '0x6b1ecb203d82fec24f8b684f7906ef98ec9abf0a',
 '0x10ed43c718714eb63d5aa57b78b54704e256024e',
 '1.00 BNB',
 '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c',
 '0x10ed43c718714eb63d5aa57b78b54704e256024e',
 '1.00 WBNB']

这是我用于尝试的正则表达式:

'(((?<=\d\w ))\w*[^BNB])'

但这是我得到的结果:

[("WBNB'", ''), ("BNB'", ''), ("RBH'", ''), ("BNB'", ''), ("WBNB'", '')]

任何想法以正确的方式获得我需要的东西?(在这种情况下只有“RBH”)

标签: pythonregexregex-negation

解决方案


试试这个(((?<=\d\w ))\w*[A-Z]{0,1}[^N][^B](?='))


推荐阅读