2016-04-22 1 views
2

У меня есть эта ссылка:Как взрываются и регулярное выражение в Python

http://www.mySite.come/part1/one-two-12/one-two-three-four-x36-250g-P469198/ 

я хочу, чтобы Чек, если последняя часть начинается с «Р» и числа, как: P432432

как я могу взорваться и проверить мое состояние?

я пытался:

url="http://www.mySite.come/part1/one-two-12/one-two-three-four-x36-250g-P469198/" 
url.s.split('-') 
+1

'url.split ('-') [- 1]' ..you получит последнюю часть с этим – rock321987

ответ

1

Вы можете использовать

re.sub("[^\w]", "" , url.split('-')[-1]) 

, чтобы получить последнюю часть и проверить его с помощью

re.match("P\d+", re.sub("[^\w]", "", url.split('-')[-1])) 

или

re.search("P\d+", re.sub("[^\w]", "", url.split('-')[-1])) 
2

Вы можете использовать -P\d+/?$ регулярное выражение:

>>> import re 
>>> url = "http://www.mySite.come/part1/one-two-12/one-two-three-four-x36-250g-P469198/" 
>>> re.search(r"-P\d+/?$", url) 
<_sre.SRE_Match object at 0x104faf920> 

Объяснение:

  • -P является тир следует P, буквально
  • \d+ будет соответствовать одной или более цифр
  • /? будет необязательно соответствовать слэш (принимая во внимание, что это может быть не всегда)
  • $ будет соответствовать конец строки

Если вы хотите извлечь что часть, использовать захвата группы:

>>> match = re.search(r"-(P\d+)/?$", url) 
>>> match.group(1) 
'P469198' 
+1

Не нужно экранировать '-' вне класса символа. –

+0

@ WiktorStribiżew хорошая точка, спасибо. – alecxe

+0

@alecxe вы только скорректировали его в 1 из 3-х мест, но это приятное решение. –

1

Если вам просто нужно проверить, если последняя часть содержит -Pdigit, вы можете использовать:

if re.search(r"-P\d+/$", subject, re.DOTALL): 
    # Successful match 
else: 
    # Match attempt failed 

-P\d+/$ 

Options: Case sensitive; Exact spacing; Dot matches line breaks; ^$ don’t match at line breaks; Regex syntax only 

Match the character string “-P” literally (case sensitive) «-P» 
Match a single character that is a “digit” (any decimal number in any Unicode script) «\d+» 
    Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+» 
Match the character “/” literally «/» 
Assert position at the end of the string, or before the line break at the end of the string, if any (line feed) «$» 

 Смежные вопросы

  • Нет связанных вопросов^_^