2016-04-22 4 views
2

Ich habe diesen Link:Wie explodieren und Regex in Python

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

Ich möchte Chek wenn der letzte Teil mit ‚P‘ beginnt und Zahlen wie: P432432

wie kann ich explodieren und überprüfen Sie meine Bedingung?

Ich habe versucht:

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

'url.split ('-') [- 1]' ..Sie erhalten den letzten Teil mit diesem – rock321987

Antwort

1

Sie

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

den letzten Teil zu erhalten und validieren

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

oder

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

Sie die -P\d+/?$ regulären Ausdruck verwenden:

>>> 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> 

Erläuterung:

  • -P ist ein Strich durch P gefolgt, buchstäblich
  • \d+ würde eine oder mehrere Ziffern entsprechen
  • /? würde einen Schrägstrich optional übereinstimmen (unter Berücksichtigung, dass es nicht immer vorhanden sein könnten)
  • $ würde das Ende der Zeichenfolge übereinstimmen

Wenn Sie extrahieren möchten dass ein Teil, verwenden Sie eine Erfassungsgruppe:

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

Es ist nicht nötig, '-' außerhalb der Zeichenklasse zu entkommen. –

+0

@ WiktorStribiżew guten Punkt, danke. – alecxe

+0

@alecxe Sie haben es nur an 1 von 3 Stellen korrigiert, aber es ist eine nette Lösung. –

1

Wenn Sie brauchen nur zu überprüfen, ob der letzte Teil -Pdigit Verwendung enthält, können Sie verwenden:

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) «$»