Heim  >  Artikel  >  Backend-Entwicklung  >  Wie extrahiere ich doppelte Werte aus Zeichenfolgen mithilfe regulärer Ausdrücke?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-21 13:00:30254Durchsuche

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>

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
   $

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>

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>

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!

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