Вот как вы могли бы сделать это в Python, используя положительные и отрицательные прогнозные утверждения ((?=...)
и (?!...)
):
>>> import re
>>> s = '"{balba $aaa = $bbb.test == $ddd == $sdfsf.dfgdfg.dfg}"'
>>> for index, found in enumerate(re.findall('\$[a-zA-Z0-9_]+(?!\.)(?=\W)', s)):
... print '%d. %s' % (index + 1, found)
...
1. $aaa
2. $ddd
... где вы утверждаете, что идентификатор содержит только разрешенные символы, за которыми не следуют точки и затем неидентифицирующий символ.
Это можно упростить до:
>>> for index, found in enumerate(re.findall('\$\w+(?!\.)(?=\W)', s)):
... print '%d. %s' % (index + 1, found)
...
1. $aaa
2. $ddd