2012-04-13 12 views
-2

Was .Can jemand Wortgrenze in Python ist bitte das erklärt mit Beispielen,Was ist Grenze Wort während regex in Python mit

Beispiel: 1

>>> x = '456one two three123' 
>>> y=re.search(r"\btwo\b",x) 
>>> y 
<_sre.SRE_Match object at 0x2aaaaab47d30> 

Beispiel: 2

>>> y=re.search(r"two",x) 
>>> y 
<_sre.SRE_Match object at 0x2aaaaab47d30> 

Example3:

>>> ip="192.168.254.1234" 
>>> if re.search(r"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b",ip): 
... print ip 
... 

Exa mple4:

>>> ip="192.168.254.1234" 
>>> if re.search(r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",ip): 
... print ip 
192.168.254.1234 
+1

Die Dokumentation hat die Antwort: http://docs.python.org/library/re.html#regular-expression-syntax –

+1

Anstatt uns zu erklären, wie vier Beispiele funktionieren, warum fragst du nicht nach was du verstehst du nicht? Zum Beispiel welche Ausgabe wo erwartet und was stattdessen herauskommt? –

+0

Ich möchte wissen, warum \ b erforderlich ist .... Wenn ich die Beispiele nicht jeden Kommentar gebe, die Sie nicht versucht haben, wenn ich Beispiele gebe, fragt jemand, "warum fragst du nicht, was du nicht tust verstehen?" :) Verteilte Gruppe von Leuten, die sich die Posts ansehen :) – Rajeev

Antwort

6

"Wortgrenze" bedeutet genau das, was es sagt: die boundary eines Wortes, d. H. Entweder den Anfang oder das Ende.

Es entspricht keinem tatsächlichen Zeichen in der Eingabe, aber es wird nur übereinstimmen, wenn die aktuelle Übereinstimmungsposition am Anfang oder Ende des Wortes ist.

Dies ist wichtig, da, anders als wenn Sie nur Whitespace übereinstimmen, es auch am Anfang oder Ende der gesamten Eingabe übereinstimmt.

So wird '\bfoo''foobar' entsprechen und 'foo bar' und 'bar foo', aber nicht 'barfoo'.

'foo\b' wird 'foo bar' und 'bar foo' und 'barfoo', entsprechen aber nicht 'foobar'.

+1

Bitte beachten Sie, dass in diesen Beispielen das Ergebnis des Spiels immer nur "foo" von z. "foo bar" und so weiter. Um das klar zu machen. – HWende

+0

Ja. Außerdem ist "Übereinstimmung" eigentlich ungenau, da Sie 're.search' verwenden müssen, um ein positives Ergebnis für die Strings zu erhalten, die nicht mit' foo' beginnen. –

+0

danke für die Antwort schön .... – Rajeev

1

Try this:

ip="192.168.254.1234" 
res = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",ip) 
print(res) 

Beachten Sie, wie ich richtig die Punkte entgangen. Die IP wird gefunden, weil es der Regex egal ist, was nach den letzten 1-3 Ziffern kommt.

Jetzt:

ip="192.168.254.1234" 
res = re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b",ip) 
print(res) 

Das wird nicht funktionieren, da die letzten 1-3 Ziffern sind nicht an einer Grenze endet.

+0

Passen Sie den Punkt war ein Bearbeitungsfehler bitte nicht kümmern. Ich habe es jetzt korrigiert – Rajeev