Wie extrahiere ich doppelte Werte aus Zeichenfolgen mithilfe regulärer Ausdrücke?

Mary-Kate Olsen
Freigeben: 2024-10-21 13:00:30
Original
341 Leute haben es durchsucht

How to Extract Double Values from Strings Using Regular Expressions?

Double-Werte aus Strings mit Regex extrahieren

Problem: Wie kann man mit Regex einen Double-Wert aus einem String isolieren? ein regulärer Ausdruck?

Betrachten Sie den folgenden Codeausschnitt:

<code class="python">import re

pattr = re.compile(???)    
x = pattr.match("4.5")</code>
Nach dem Login kopieren

Lösung:

So extrahieren Sie einen Double-Wert aus einer Zeichenfolge mithilfe eines regulären Ausdrucks Ausdruck können Sie den folgenden regulären Ausdruck verwenden:

(?x)
   ^
      [+-]?\ *      # Optional sign and space
      (             # Integers or f.p. mantissas:
          \d+       # Integers of the form a...
          (
              \.\d* # Mantissa of the form a.b or a.
          )?        # ? takes care of integers of the form a
         |\.\d+     # Mantissa of the form .b
      )
      ([eE][+-]?\d+)?  # Optionally match an exponent
   $
Nach dem Login kopieren

Dieser reguläre Ausdruck entspricht Zeichenfolgen, die mit einem optionalen Vorzeichen und Leerzeichen beginnen, gefolgt von einer Ganzzahl oder einer Gleitkomma-Mantisse und einem optionalen Exponenten.

Hier ist ein Beispiel:

<code class="python">import re

re_float = re.compile("""(?x)
   ^
      [+-]?\ *      # Optional sign and space
      (             # Integers or f.p. mantissas:
          \d+       # Integers of the form a...
          (
              \.\d* # Mantissa of the form a.b or a.
          )?        # ? takes care of integers of the form a
         |\.\d+     # Mantissa of the form .b
      )
      ([eE][+-]?\d+)?  # Optionally match an exponent
   $""")

m = re_float.match("4.5")
print(m.group(0))
# -> 4.5</code>
Nach dem Login kopieren

Mehrere Zahlen aus einer Zeichenfolge extrahieren:

Wenn Sie mehrere Zahlen aus einer größeren Zeichenfolge extrahieren müssen, können Sie dies tun Verwenden Sie die Funktion findall():

<code class="python">s = """4.5 abc -4.5 abc - 4.5 abc + .1e10 abc . abc 1.01e-2 abc
       1.01e-.2 abc 123 abc .123"""
print(re.findall(r"[+-]? *(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?", s))
# -> ['4.5', '-4.5', '- 4.5', '+ .1e10', ' 1.01e-2',
#     '       1.01', '-.2', ' 123', ' .123']</code>
Nach dem Login kopieren

Dieser reguläre Ausdruck entspricht jeder Zahl, die aus einem optionalen Vorzeichen, einem Leerzeichen, einer Kombination aus Ganzzahl und optionalem Bruchteil sowie einer optionalen Exponentenschreibweise besteht.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich doppelte Werte aus Zeichenfolgen mithilfe regulärer Ausdrücke?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage