Extrahieren von Text zwischen Klammern mit Regex

Ziad El Hachem

In Sätzen wie:

"[x] Alpha

[33] Beta "

Ich extrahiere ein Array von Daten in Klammern als ([x], [33])

Verwenden des VBA-Regex-Musters:

"(\[x\])|(\[\d*\])"

Ich kann das Array von Daten ohne Klammern nicht direkt als (x, 33) extrahieren.

Verwenden von Webressourcen-Ratschlägen für Muster

"(?<=\[)(.*?)(?=\])"

Ist dies ein VBA-spezifisches Problem (dh Einschränkungen bei der Implementierung von Regex) oder habe ich das Vorwärts- und Rückwärtsmuster falsch verstanden?

Public Function Regx( _
  ByVal SourceString As String, _
  ByVal Pattern As String, _
  Optional ByVal IgnoreCase As Boolean = True, _
  Optional ByVal MultiLine As Boolean = True, _
  Optional ByVal MatchGlobal As Boolean = True) _
  As Variant

Dim oMatch As Match
Dim arrMatches
Dim lngCount As Long

' Initialize to an empty array
arrMatches = Array()
With New RegExp
    .MultiLine = MultiLine
    .IgnoreCase = IgnoreCase
    .Global = MatchGlobal
    .Pattern = Pattern
    For Each oMatch In .Execute(SourceString)
        ReDim Preserve arrMatches(lngCount)
        arrMatches(lngCount) = oMatch.Value
        lngCount = lngCount + 1
    Next
End With


Sub testabove()
    Call Regx("[x] Alpha" & Chr(13) & _
      "[33] Beta", "(\[x\])|(\[\d*\])")
End Sub
Wiktor Stribiżew

Verwenden Sie die Erfassung um die Untermuster, mit denen Sie den gewünschten Wert abrufen können.

Verwenden

"\[(x)\]|\[(\d*)\]"

(oder \d+wenn Sie mit mindestens einer Ziffer übereinstimmen müssen, *bedeutet dies null oder mehr Vorkommen und +bedeutet ein oder mehrere Vorkommen ).

Oder verwenden Sie das generische Muster, um alles in den eckigen Klammern ohne die Klammern zu extrahieren :

"\[([^\][]+)]"

SubmatchesGreifen Sie dann auf den richtigen Index zu, indem Sie die Submatch-Länge überprüfen (da Sie eine Alternative haben, ist jeder der Submatchs leer), und los geht's. Ändern Sie einfach Ihre forSchleife mit

For Each oMatch In .Execute(SourceString)
    ReDim Preserve arrMatches(lngCount)
    If Len(oMatch.SubMatches(0)) > 0 Then
        arrMatches(lngCount) = oMatch.SubMatches(0)
    Else
        arrMatches(lngCount) = oMatch.SubMatches(1)
    End If
    ' Debug.Print arrMatches(lngCount) ' - This outputs x and 33 with your data
    lngCount = lngCount + 1
Next

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Regex zum Extrahieren von Text zwischen Klammern

Extrahieren von Text in Klammern und Text außerhalb mit Regex

Muster zum Extrahieren von Text zwischen Klammern

R-Befehl zum Extrahieren von Text zwischen zwei Zeichenfolgen mit geschweiften Klammern

Extrahieren eines Wortes zwischen Klammern mit Regex-Muster

Regex zum Parsen von Text zwischen Klammern und Klammern

Regulärer Ausdruck zum Extrahieren von Text zwischen geschweiften Klammern

Regex zum Auswählen von Text zwischen Klammern mit einem bestimmten Text als Ziel

Frage zum Extrahieren von Text zwischen REGEX

Extrahieren von Wörtern in Klammern mit Regex in Python

Regex: Extrahieren von Zahlen aus Klammern mit mehreren Übereinstimmungen

Regex: Extrahieren Sie eine Zeichenfolge mit Wörtern, die von geschweiften Klammern umgeben sind, wenn sie einen Text enthält

Das Extrahieren von Text zwischen zwei Überschriften mit Regex erfordert komplizierte Nicht-Capture-Gruppen

Extrahieren Sie den Text zwischen allen Klammern

Text aus speziellem Link zwischen Klammern extrahieren

Regex stimmt nicht mit Leerzeichen im Text zwischen Klammern überein

Extrahieren von Text mit beautifulSoup und Regex

Extrahieren von Text aus Zeichenfolgen mit Regex

Extrahieren von Text mit RegEx in Notepad ++ Verwirrung

Entfernen von Text zwischen Klammern mit nicht übereinstimmenden Paaren

Extrahieren aller überlappenden Teilzeichenfolgen zwischen verschachtelten übereinstimmenden Klammern mit einem .NET-Regex

Extrahieren von Text zwischen Klammern in Spalten im Datenrahmen in neue Spalten in Datenrahmen

Regulärer Ausdruck zum Extrahieren von Text zwischen eckigen Klammern, Komma und Anführungszeichen [] , "

Java-Regex zum Extrahieren von Text zwischen Tags

Verwenden von Regex, um eine Zeichenfolge zwischen Lookbehind und Lookahead mit Klammern und Klammern zu erhalten

Regulärer Ausdruck zum Extrahieren von Zeichenfolgen zwischen spitzen Klammern mit genau einem @-Zeichen dazwischen

Extrahieren Sie Text zwischen Tags mit Regex Python

Zahl zwischen Text und | . extrahieren mit RegEx-Python

Regex zum Extrahieren von Werten in Klammern

TOP Liste

  1. 1

    So verschieben Sie ein Bild in Flutter/Dart mit einem Draggable

  2. 2

    Unity Build-Fehler: Der Name 'EditorUtility' ist im aktuellen Kontext nicht vorhanden

  3. 3

    TypeAhead.js zeigt keine Ausgangsschienen an?

  4. 4

    Deklarieren einer nicht initialisierten Variablen in der Klassendefinition in Python

  5. 5

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  6. 6

    Interpolieren Sie mit Python die 2D-Matrix entlang der Spalten

  7. 7

    spring-data-jpa: ORA-01795: Die maximale Anzahl von Ausdrücken in einer Liste beträgt 1000

  8. 8

    Warum funktioniert Phantomjs nicht mit dieser Site?

  9. 9

    numpy: Berechnen Sie die Ableitung der Softmax-Funktion

  10. 10

    Wie vermeide ich, dass die gesamte App neu geladen wird, wenn Nav.Link von React-Bootstrap verwendet wird?

  11. 11

    MongoDB eingebettetes Dokument unterscheiden und filtern

  12. 12

    Warum funktioniert das Umgebungslicht in diesem Beispiel nicht?

  13. 13

    Wie aktualisiere ich ein Feld in einer Raumdatenbank mit einem Repository und einem Ansichtsmodell?

  14. 14

    Python gibt einen Fehler aus, dass eine Datei nicht vorhanden ist, wenn dies eindeutig der Fall ist

  15. 15

    Aktualisieren des Werts im Json-Objekt in Python

  16. 16

    Wie verwende ich Format-Table ohne Abschneiden von Werten?

  17. 17

    Kivy: Machen Sie Scatter gleich groß wie das untergeordnete Etikett oder Bild

  18. 18

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  19. 19

    So vergleichen Sie Werte in verschiedenen Objekten jq

  20. 20

    Teilen Sie die Zeichenfolge durch (') und Leerzeichen, aber lassen Sie alle Leerzeichen zwischen zwei aufeinander folgenden (')

  21. 21

    Überprüfen Sie, ob der ausgewählte Wert 'YES' ist, wenn ja, aktivieren Sie ein Steuerelement mit Javascript

heißlabel

Archiv