Несоответствие регулярных выражений Python по сравнению с Kodos и RegExr: невозможно фильтровать определенные символы в Python - PullRequest
0 голосов
/ 19 января 2010

Я использую Python 2.6.3. Когда я делаю:

import re, urllib
f = urllib.urlopen(website)
z = f.read()
a = re.findall(r'(\b\d*\SLegos\b)[^\\/bLegos\b]', z)
print a

Я получаю:

['/Legos', '/Legos', '525Legos', '53Legos', '11Legos', '8Legos', '10Legos', '2Legos', '0Legos', '0Legos', '0Legos', '0Legos', '9Legos', '1Legos', '0Legos', '0Legos', '0Legos', '/Legos']

Если я добавлю сайт в качестве исходного кода в Kodos или RegExr от gSkinner и использую мой приведенный выше код RegEx, они оба говорят, что я должен получить:

'525Legos', '53Legos', '11Legos', '8Legos', '10Legos', '2Legos', '0Legos', '0Legos', '0Legos', '0Legos', '9Legos', '1Legos', '0Legos', '0Legos', '0Legos'

Что намного ближе к нужным мне данным.

Как мне отбросить '/Legos' от возвращения в моем регулярном выражении Python?

Спасибо

Адриан

1 Ответ

3 голосов
/ 19 января 2010

Ваше регулярное выражение слишком сложное и ошибочное, вы можете просто использовать:

\b(\d+Legos)\b

если вам не нужен Legos в выводе, вы, конечно, можете просто убрать его из скобок:

\b(\d+)Legos\b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...