wake-up-neo.com

Beispiel für einen regulären Ausdruck in Python

Ich möchte einen einfachen regulären Ausdruck in Python schreiben, der eine Zahl aus HTML extrahiert. Das HTML-Beispiel lautet wie folgt:

Your number is <b>123</b>

Wie kann ich nun "123" extrahieren, d. H. Den Inhalt des ersten fetten Textes nach dem Text "Ihre Nummer ist"?

35
Saqib
import re
m = re.search("Your number is <b>(\d+)</b>",
      "xxx Your number is <b>123</b>  fdjsk")
if m:
    print m.groups()[0]
54

Dann s = "Your number is <b>123</b>" gegeben:

 import re 
 m = re.search(r"\d+", s)

werde arbeiten und dir geben

 m.group()
'123'

Der reguläre Ausdruck sucht nach einer oder mehreren aufeinander folgenden Ziffern in Ihrer Zeichenfolge. 

Beachten Sie, dass in diesem speziellen Fall wusste dass es eine numerische Sequenz geben würde, andernfalls müssten Sie den Rückgabewert von re.search() testen, um sicherzustellen, dass m eine gültige Referenz enthält. Andernfalls würde m.group() einen AttributeError: ergeben. Ausnahme.

Wenn Sie eine Menge HTML-Code verarbeiten, möchten Sie natürlich BeautifulSoup ernsthaft betrachten - es ist dafür und noch viel mehr gedacht. Die Grundidee von BeautifulSoup ist es, das manuelle Parsen mit String-Ops oder regulären Ausdrücken zu vermeiden.

21
Levon
import re
x = 'Your number is <b>123</b>'
re.search('(?<=Your number is )<b>(\d+)</b>',x).group(0)

dadurch wird nach der Nummer gesucht, die auf die Zeichenfolge "Ihre Nummer ist" folgt

10
muffel
import re
print re.search(r'(\d+)', 'Your number is <b>123</b>').group(0)
5
Jacob Abraham

Der einfachste Weg ist nur die Ziffer (Ziffer) zu extrahieren. 

re.search(r"\d+",text)
4
Avinash Kumar
import re
found = re.search("your number is <b>(\d+)</b>", "something.... Your number is <b>123</b> something...")

if found:
    print found.group()[0]

Hier (\ d +) ist die Gruppierung, da nur eine Gruppe [0] verwendet wird. Bei mehreren Gruppierungen sollte [grouping index] verwendet werden.

2
val="Your number is <b>123</b>"

Option 1

m=re.search(r'(<.*?>)(\d+)(<.*?>)',val)

m.group(2)

Option 2

re.sub(r'([\s\S]+)(<.*?>)(\d+)(<.*?>)',r'\3',val)
1
Saikat Dasgupta

Sie können das folgende Beispiel verwenden, um Ihr Problem zu lösen:

import re

search = re.search(r"\d+",text).group(0) #returns the number that is matched in the text

print("Starting Index Of Digit", search.start())

print("Ending Index Of Digit:", search.end())
0
sadiq shah