Wie kann ich regexextract-Funktion in Google Docs Tabellen zu bekommen "alle" vorkommen von einem string?
Mein text-string befindet sich in Zelle D2:
Decision, ERC Case No. 2009-094 MC, In the Matter of the Application for Authority to Secure Loan from the National Electrification Administration (NEA), with Prayer for Issuance of Provisional Authority, Dinagat Island Electric Cooperative, Inc. (DIELCO) applicant(12/29/2011)
Diese Funktion:
=regexextract(D2,"\([A-Z]*\)")
greifen (NEA), aber nicht (DIELCO)
Ich würde es gerne zu extrahieren beide (NEA) und (DIELCO)
Ich denke, webapps.stackexchange.com ist die empfohlene Stelle für die Nutzung von Google Docs Fragen.
InformationsquelleAutor nicknich3 | 2012-01-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie mit capture-Gruppen, die bewirken, dass
regexextract()
um ein array zurückgeben. Sie können diese verwenden, als die Zelle führen, in welchem Fall Sie erhalten eine Auswahl der Ergebnisse, oder Sie füttern das array an eine andere Funktion zu formatieren, es zu Ihrem Zweck. Zum Beispiel:wird wieder das array:
Ein weiterer Ansatz wäre die Verwendung
regexreplace()
. Dies hat den Vorteil, dass das ersetzen ist global (wies/pattern/replacement/g
), so brauchen Sie nicht, um zu wissen, die Anzahl der Ergebnisse im Voraus. Zum Beispiel:zurück zum string:
Ooops. Eigentlich muss ich mich zum Studium dieser ein bisschen. Die Lösung funktioniert, wenn es mehrere spielen; es gibt alle von Ihnen. Aber wenn es nur ein Spiel, es gibt keine.
Das ist eine Frage der kommenden mit der regex, die am besten Ihren Zweck. "Option 1" verfügt über zwei capture-Gruppen und arbeitet mit Zeichenfolgen, die beiden vorkommen. Wenn die Anzahl des Auftretens ist unbekannt, als "Option 2".
also mit regexextract noch keine Möglichkeit raus zu ziehen, mehr als ein Spiel, ohne mehrere capture-Gruppen?
InformationsquelleAutor MetaEd
Hier sind zwei Lösungen, eine mit den spezifischen Bedingungen des Autor ' s-Beispiel, das andere erweitert der Autor das Beispiel-regex-Muster, die erscheint, um mit allen ALLCAPS Bedingungen. Ich bin mir nicht sicher, was Sie wollte, also gab ich beides.
(Setzen Sie den block von text in A1)
Generische Lösung für alle Wörter in ALLCAPS
Ergebnis:
NB: Die Hauptlast der Arbeit in der AKTIVIERTEN Formel, die Kleinbuchstaben Funktionen sind nur für die Bereinigung.
Wenn Sie möchten, dass der Raum der Trennung, wird die Formel ein wenig einfacher:
Ergebnis:
(Eine Möglichkeit, ich mag das Spiel mit regex in google Tabellen ist zu Lesen, das regex-Muster aus einer anderen Zelle, so kann ich es ändern, ohne zu müssen, zu Bearbeiten oder neu einfügen in alle Zellen mit diesem Muster. Diese sieht so aus:
Zelle A1:
Zelle B1 " (ohne Anführungszeichen):
Formel in eine beliebige Zelle:
Durch Verankerung B$1, ich kann füllen Sie alle meine Zeilen auf einmal und die Referenz nicht erhöht.)
Vorherigen Antwort:
Spezifische Lösung für gewählten Bedingungen (ERC, DIELCO)
Ergebnis:
Wie vor die Hauptlast der Arbeit in der AKTIVIERTEN Formel, die Kleinbuchstaben Funktionen sind nur für die Bereinigung.
Diese Formel findet alle ERC oder DIELCO, oder beide in dem block von text. Die erste ist die Reihenfolge egal, aber die Ausgabe wird immer von ERC, gefolgt von DIELCO (die Reihenfolge ist verloren). Dies behebt das Manko mit der vorherigen Antwort mit "(bra).*(bra)" in diesem isolierten ERC oder DIELCO kann noch abgestimmt werden.
Dieser hat auch eine einfachere form mit Raumgliederung:
Ergebnis:
=JOIN(", ",SPLIT(REGEXREPLACE(REGEXREPLACE($A$1,"(^.*?\(|\).*?\(|\).*?$)","|"),"[^A-Z]+","|"),"|"))
gibt dieses Ergebnis: NEA, DIELCO. Es funktioniert, indem es zuerst zu entfernen alles, was nicht in Klammern stehen: (erste regex = |NEA|DIELCO|12/29/2011|), dann entfernen alles, was nicht ALLCAPS Worten: (zweite regex = |NEA|DIELCO|), und schließlich die Spaltung und Wiedervereinigung für die schöne Formatierung. Google-sheet hier: goo.gl/3nJcFeInformationsquelleAutor Dannid