Search code examples
pythonregexregex-negation

Getting the text after a regex match and a negative condition


I'm practising my regex skills trying to filter the 'token' that's different from BNB in a transaction.

Here is an example:

The original text :

['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']

This is the regex I use for the try:

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

But this is the result I get:

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

Any idea for a correct way to get what I need? (in this case only "RBH")


Solution

  • Try this (((?<=\d\w ))\w*[A-Z]{0,1}[^N][^B](?='))