2016-03-24 3 views
2

У меня есть строка:Использование Regex в Python для поиска подстроки?

line_to_test = "http://website/[SequenceOfLetters&NumbersONLY].html" 

Я хочу регулярное выражение для сопоставления выше схеме:

, что я попробовал в настоящее время является:

c = len(re.findall(r"http:\/\/website\/([a-zA-Z0-9]?).html",line_to_test)) 

Но c здесь приходит утратившими даже когда line_to_test содержит шаблон.

+0

И какая строка вы протестированы с? –

+0

'([a-zA-Z0-9]?)' = 1 или 0 буква или номер - если вы хотите выполнить последовательность, вы хотите заменить '?' На '+' ... –

+0

'test_string =" sdfmknldksjfnkmsd f , nm http://abc.de/msndkjnaskl.html "' – CodeAllDay

ответ

0

? будет соответствовать только 0 или 1 символу. Попробуйте

c = len(re.findall(r"http:\/\/website\/([a-zA-Z0-9]+).html",line_to_test)) 

Вы можете использовать онлайн сервис как RegExr проверить свои регулярные выражения: http://regexr.com/3d301

+0

Спасибо selcuk !!! – CodeAllDay

1

? средства независимо от предшествовавшего это было необязательным, в данном случае [a-zA-Z0-9]. Это означает, что у вас может быть буква или номер 0 или 1 раз.

Вы должны использовать *, чтобы выбрать его 0 раз или больше, или использовать +, чтобы выбрать его 1 times` или больше.

Попробуйте RegEx:

c = len(re.findall(r"http:\/\/website\/([a-zA-Z0-9]+).html",line_to_test)) 

Если вы использовали *, было бы таким же, как ([a-zA-Z0-9]+)?, означая http://website/.html будет работать.

Live Demo on RegExr

+0

Спасибо за точное объяснение !! – CodeAllDay